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

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

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

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.

Я ожидал, что написанный вами код вернет класс «Класс», а не класс «Объект».

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

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

public String getClassHierarchy() {
    return super.getClassHierarchy() + ".MyAbstract";
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top