Comment obtenez-vous la classe d'une classe abstraite (Object) dans JavaME?

StackOverflow https://stackoverflow.com/questions/161614

  •  03-07-2019
  •  | 
  •  

Question

Je dois obtenir la classe d'un objet au moment de l'exécution.

Pour une classe non abstraite, je pourrais faire quelque chose comme:

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

Mais pour une classe abstraite cela ne fonctionne PAS (me donne toujours Object )

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

Ce code sera exécuté dans les environnements JavaME.

Était-ce utile?

La solution

Vous avez juste besoin

MyAbstract.class

Cette expression renvoie l'objet Class représentant MyAbstract.

Autres conseils

Le code que vous voulez dans le cas abstrait est:

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

bien que, personnellement, je ne me soucie pas de définir la constante et que je viens d'utiliser MyAbstract.class tout au long.

Je m'attendais à ce que le code que vous avez écrit renvoie la classe "Classe" et non la classe "Objet".

Je pense que plus d'informations sont nécessaires ici. En Java, une classe abstraite ne peut pas être instanciée. Cela signifie qu'un objet au moment de l'exécution ne peut pas avoir sa classe abstraite. Ce serait une sous-classe qui implémenterait toutes les méthodes abstraites. Dans JavaME, Object.getClass () devrait suffire. Essayez-vous en quelque sorte de reconstituer votre hiérarchie de classes au moment de l'exécution?

Dans ce cas, vous pouvez implémenter quelque chose comme ceci:

public String getClassHierarchy() {
    return super.getClassHierarchy() + ".MyAbstract";
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top