Я хочу получить имя дочернего класса, которое реализуется интерфейсом. Например
public interface A
public class B implements A
public class C implements A
...
В моем коде я объявил интерфейс A и установил значение для одного из этих классов. Итак, что у меня есть:
A a = object.getA();
Теперь я хочу получить имя текущего дочернего класса, то есть B, C или что-то еще, но я не хочу делать это с instanceof, потому что у меня много дочерних классов, что делает код ненужным. Я в основном ищу это, но getChild(), конечно, не существует.
a.getChild().getClass().getName()
Заранее спасибо!
Если я правильно понял вопрос, похоже, что вы ищете:
String name = a.getClass().getName();
// Or
String simpleName = a.getClass().getSimpleName();
Если класс объекта «a» является экземпляром B, то getSimpleName() вернет «B». Он возвращает «C», если «a» является экземпляром C и так далее.
Это сработает.
interface A {
}
class B implements A {
}
class C implements A {
}
class Test {
public static void main (String[] args) {
A a = new C();
System.out.println(a.getClass().getName());
}
}