Мне нужно получить класс объекта во время выполнения.
Для неабстрактного класса я мог бы сделать что-то вроде:
public class MyNoneAbstract{
public static Class MYNONEABSTRACT_CLASS = new MyNoneAbstract().getClass();
Но для абстрактного класса это НЕ работает (всегда дает Object)
public abstract class MyAbstract{
public static Class MYABSTRACT_CLASS = MyAbstract.class.getClass();
Этот код будет работать в средах JavaME.




Тебе просто нужно
MyAbstract.class
Это выражение возвращает объект Class, представляющий MyAbstract.
В абстрактном случае вам нужен следующий код:
public abstract class MyAbstract{
public static Class MYABSTRACT_CLASS = MyAbstract.class;
}
хотя я лично не стал бы утруждать себя определением константы и просто использовал MyAbstract.class повсюду.
Я ожидал, что написанный вами код вернет класс Class, а не Object.
Я плохо объяснил. Мне нужно вернуть класс связанного вспомогательного класса, а статическая переменная просто для удобства Большое спасибо за ваш ответ
Думаю, здесь требуется дополнительная информация.
В Java нельзя создать экземпляр абстрактного класса.
Это означает, что класс объекта во время выполнения не может быть абстрактным.
Это должен быть подкласс, реализующий все абстрактные методы.
В JavaME Object.getClass() должен быть всем, что вам нужно.
Вы каким-то образом пытаетесь восстановить иерархию классов во время выполнения?
В этом случае вы могли бы вместо этого реализовать что-то вроде этого:
public String getClassHierarchy() {
return super.getClassHierarchy() + ".MyAbstract";
}
Это будет на CLDC1.1, но не на CLDC1.0 :: blog.javia.org/java-class-literal-on-cldc