Как получить имя дочернего класса родительского интерфейса в Java

Я хочу получить имя дочернего класса, которое реализуется интерфейсом. Например

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()

Заранее спасибо!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
37
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если я правильно понял вопрос, похоже, что вы ищете:

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());
    }
}

Другие вопросы по теме