Как получить класс абстрактного класса (объекта) в JavaME?

Мне нужно получить класс объекта во время выполнения.

Для неабстрактного класса я мог бы сделать что-то вроде:

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.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
3 169
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Тебе просто нужно

MyAbstract.class

Это выражение возвращает объект Class, представляющий MyAbstract.

Это будет на CLDC1.1, но не на CLDC1.0 :: blog.javia.org/java-class-literal-on-cldc

funkybro 12.02.2010 13:22

В абстрактном случае вам нужен следующий код:

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

хотя я лично не стал бы утруждать себя определением константы и просто использовал MyAbstract.class повсюду.

Я ожидал, что написанный вами код вернет класс Class, а не Object.

Я плохо объяснил. Мне нужно вернуть класс связанного вспомогательного класса, а статическая переменная просто для удобства Большое спасибо за ваш ответ

Philip.ie 02.10.2008 20:22

Думаю, здесь требуется дополнительная информация. В Java нельзя создать экземпляр абстрактного класса. Это означает, что класс объекта во время выполнения не может быть абстрактным. Это должен быть подкласс, реализующий все абстрактные методы. В JavaME Object.getClass() должен быть всем, что вам нужно. Вы каким-то образом пытаетесь восстановить иерархию классов во время выполнения?

В этом случае вы могли бы вместо этого реализовать что-то вроде этого:

public String getClassHierarchy() {
    return super.getClassHierarchy() + ".MyAbstract";
}

Другие вопросы по теме