Как получить класс, выбранный пользователем? - PullRequest
1 голос
/ 19 марта 2019

Я прочитал несколько постов об этом, но не уверен, что какой-то ответ, который я искал. Я хочу выбрать класс, выбранный пользователем, и проверить, есть ли он в списке. Я не хочу создавать if, switch или Map (я буду использовать много классов). Я пытаюсь сделать это в несколько строк, если это вообще возможно. Спасибо!

public boolean isClassDefined(ArrayList<GeometricObject> geoObjects) {
    Class<?> classDefinedByUser=null;
    try {
        classDefinedByUser = Class.forName("Square");
        //as if user has typed "Square", being "class Square extends GeometricObject"
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(Mission.class.getName()).log(Level.SEVERE, null, ex);
    }

    for (GeometricObject geo : geoObjects) {
        //here is where i don't know what to do
        //I want to create a if to check if there is an object (of the class
        //defined by the user) initialized into ArrayList "geoObjects"
        //I don't want to use lots of ifs
        if (geo instanceof classDefinedByUser.getClass()) {
            //if exists a Square type object, return true
            return true;
        }
    }
    return false;
}

1 Ответ

1 голос
/ 19 марта 2019

Используйте Class.isInstance, чтобы проверить, является ли объект, который у вас есть , экземпляром класса.

Ваш чек должен быть:

if(classDefinedByUser.isInstance(geo))

Просто обратите внимание, что этот метод вернет false, если geo == null (даже если он должен быть экземпляром класса)

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