Como você recebe a classe de uma classe abstrata (Object) em JavaME?

votos
1

Eu preciso para obter a classe de um objeto em tempo de execução.

Para uma classe não-abstrata que eu poderia fazer algo como:

public class MyNoneAbstract{
    public static Class MYNONEABSTRACT_CLASS = new MyNoneAbstract().getClass();

Mas para uma classe abstrata Isso não funciona (sempre me dá Object)

public abstract class MyAbstract{
    public static Class MYABSTRACT_CLASS = MyAbstract.class.getClass();

Este código será executado em ambientes JavaME.

Publicado 02/10/2008 em 11:08
fonte usuário
Em outras línguas...                            


3 respostas

votos
3

Você só precisa

MyAbstract.class

Essa expressão retorna o objeto Classe representando MyAbstract.

Respondeu 02/10/2008 em 11:11
fonte usuário

votos
0

Eu acho que é necessária mais informação aqui. Em Java, uma classe abstrata não pode ser instanciado. Isso significa que um objeto em tempo de execução não pode ter sua classe ser abstrato. Seria preciso ser uma subclasse que implementa todos os métodos abstratos. Em JavaME, Object.getClass()deve ser tudo que você precisa. Você está de alguma forma tentando reconstituir a sua hierarquia de classes em tempo de execução?

Nesse caso, você poderia implementar algo parecido com isso em vez disso:

public String getClassHierarchy() {
    return super.getClassHierarchy() + ".MyAbstract";
}
Respondeu 03/10/2008 em 14:46
fonte usuário

votos
0

O código que você quer no caso resumo é:

public abstract class MyAbstract{
    public static Class MYABSTRACT_CLASS = MyAbstract.class;
}

embora eu, pessoalmente, não me incomodaria definir os MyAbstract.class constantes e apenas utilizados por toda parte.

Eu teria esperado que o código que você escreveu ter retornado a 'Class' classe, não a classe 'Object'.

Respondeu 02/10/2008 em 14:44
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more