Kotlin получить тип в виде строки

Спасибо всем, кто ответил на этот вопрос.

Кажется, это действительно крутая гайка. Я закончил тем, что отказался от создания статического массива и getter в моем базовом классе.

public abstract class Animal{
    private static Animal[] animals= null;
    public static Animal[] getAnimals(){
        if (animals==null){
            animals = new Animal[]{
                new Dog(),
                new Cat(),
                new Lion()
            };
        }
        return animals;
    }
}

Кажется, что Java просто не настроен для самонастраиваемости, как это делает C #. Я полагаю, проблема заключается в том, что, поскольку приложение Java - это всего лишь коллекция файлов .class в файле directory / jar где-то, среда выполнения не знает о классе, пока не будет упомянута ссылка. В это время загрузчик загружает его - то, что я пытаюсь сделать, это обнаружить его, прежде чем ссылаться на него, что невозможно, не выходя из файловой системы и не глядя.

Мне всегда нравится код, который может обнаружите себя вместо того, чтобы мне рассказывать о себе, но, увы, это тоже работает.

Еще раз спасибо!

30
задан Yaroslav Admin 21 September 2015 в 09:45
поделиться