Testar se uma classe já foi instanciada

Seguinte, tenho o método abaixo que recebe uma classe do tipo Container, durante a execução.:
e preciso tratar essas classes que recebem como parametro, como se fossem um singleton, se elas já foram instanciadas
retorno a instancia dela, se não, crio uma nova instância…
dá pra fazer isso com reflect?

public static void swapTo(Container c) throws Exception { }

pensei em passar um Class<?> como parâmetro, só que não sei como faria o teste, em ambos os casos

Cuidado com esses “singletons da vida”, eles geralmente são os primeiros pontos a darem problema, veja se isso te ajuda:

public class Factory {
	
	public static Map<Class<? extends List<?>>, Object> instances = new WeakHashMap<Class<? extends List<?>>, Object>();
	
	public static synchronized <T extends List<?>> T get(Class<T> klass) {
		T t = null;
		if (instances.containsKey(klass)) {
			t = klass.cast(instances.get(klass));
		} else {
			try {
				t = klass.newInstance();
				instances.put(klass, t);
			} catch (Exception e) {
				//...
			}
		}
		return t;
	}
	
	public static void main(String[] args) {
		System.out.println("Same = " + (Factory.get(ArrayList.class) == Factory.get(ArrayList.class)));
	}
}

Esqueci de especificar que é uma solução pra uma plataforma chamada totalcross, e o compilador pra executar a solução apresentada acima tem que ser igual ou superior à 1.5 (oque não é o caso).

cara… Container é um singleton ou não?

se for… só verificar se esta null, que nem é feito no getInstance mesmo, mas acho que isto não é necessário.

Agora, para saber se já existe um objeto daquela classe, teriamos que usar a busca do forum / e google

[i]Pra saber se já existe um objeto daquela classe, vc pode criar um atributo estático na classe (como um contador) e dentro do construtor manda iterar esse contador (ou criá-lo como boolean mesmo).

Sinceramente não entendi muito bem o que vc realmente precisa. Talvez fosse melhor vc explicar seu objetivo.[/i]

Desconsiderem por favor… Postei essa resposta na thread errada. Desculpem ae.

A forma mais fácil de se fazer um singleton é colocar o construtor da sua classe como private ou protected e criar um método estático que retorna seu singleton. Colocando o construtor como privado faz com que ninguém consiga instanciar sua classe, colocar o construtor como protected faz com que somente as classes derivadas consigam instanciá-la.