Как вы получаете класс абстрактного класса (объекта) в JavaME? - PullRequest
1 голос
/ 02 октября 2008

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

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

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.

Ответы [ 3 ]

3 голосов
/ 02 октября 2008

Вам просто нужно

MyAbstract.class

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

0 голосов
/ 03 октября 2008

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

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

public String getClassHierarchy() {
    return super.getClassHierarchy() + ".MyAbstract";
}
0 голосов
/ 02 октября 2008

Код, который вы хотите в абстрактном случае:

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...