Проверьте, является ли член класса объектом класса - PullRequest
1 голос
/ 19 июля 2011

У меня есть класс, член которого является другим объектом класса среди других членов. Я хотел бы знать, как определить, является ли поле this классом Java (определенным пользователем). То есть у меня что-то вроде этого: Пользователь передает имя класса Java. Если пакет содержит класс с этим именем, я получаю все объявленные поля этого класса и выполняю операции типа DFS с теми членами данных, которые являются объектами класса.

class A {
  private String c;
  private B b;
}

class B {
  private int d;
  private String f;
}

Так что теперь в A мне нужно только выбрать B и посетить членов B. Как это сделать?

Спасибо.

Ответы [ 3 ]

1 голос
/ 20 июля 2011

Есть еще один трюк.Но результаты строго зависят от загрузчика классов.Это может помочь вам проверить, является ли класс пользовательским классом пользователя.Попробуйте запустить этот код, чтобы определить местоположение jar:

    ProtectionDomain domain = allDeclaredFields[i].getClass().getProtectionDomain();
    System.out.println("domain: " + domain);
    CodeSource codeSource = domain.getCodeSource();
    if(codeSource != null) {
       System.out.println("location: " + codeSource.getLocation());
    } else {
        System.out.println("null location, probably JRE class");
    }
0 голосов
/ 19 июля 2011

Если я правильно понял ваш вопрос, вы пытаетесь определить, принадлежит ли объект к классу или нет. Для проверки есть java-оператор instanceof, чтобы проверить его

if(b instanceof B){
//b is an object of B
}
0 голосов
/ 19 июля 2011

Вы захотите использовать отражение Java. См. http://download.oracle.com/javase/tutorial/reflect/index.html для получения дополнительной информации (нажмите на участников, должно быть то, что вам нужно)

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