получить имя интерфейса «FloatingPoint», а не имя расширяемого класса «DataTypeA» - PullRequest
0 голосов
/ 15 мая 2018

Я новичок в Java, и у меня возникла небольшая проблема, где определены следующие классы:

public interface FloatingPoint extends DataTypeA {

public interface DataTypeA extends _ElementA {

и

public interface _ElementA extends EObject {

когда я использую следующие строки:

for (int i = 0, size = MetaObject.getEAllReferences().size(); i < size; ++i) 
{
    EReference Reference = MetaObject.getEAllReferences().get(i);

    if (Reference.isContainment()){

        if (Reference.getEType() instanceof EClass) {

             EClass ContainedClass = (EClass) Reference.getEType();
             String ClassName = ContainedClass.getName();
             System.out.println(ClassName);

Я получаю «DataTypeA», но хочу иметь имя самого интерфейса «FloatingPoint».

У кого-нибудь есть идеи, как решить такую ​​проблему !!

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Унаследованные классы называются «супер» в Java.

myClass.super получит расширяемый вами класс, поэтому я считаю, что вы можете использовать ContainedClass.super.getName ();- но мне нужно немного кода, чтобы быть уверенным;)

0 голосов
/ 15 мая 2018

Вы можете использовать java.lang.Class#getInterfaces. Согласно java документы :

Определяет интерфейсы, реализуемые классом или интерфейсом. представлен этим объектом. Если этот объект представляет класс, возвращаемое значение представляет собой массив, содержащий объекты, представляющие все интерфейсы, реализованные классом. Порядок интерфейса объекты в массиве соответствуют порядку имен интерфейсов в предложении реализует объявление представленного класса этим объектом.

Например:

ArrayList<String> s = new ArrayList<>();
Class<?>[] interfaces = s.getClass().getInterfaces();
Arrays.stream(interfaces).map(e -> e.getName()).forEach(System.out::println);

Выход:

java.util.List
java.util.RandomAccess
java.lang.Cloneable
java.io.Serializable

Вот какой класс или интерфейсы ArrayList расширяются / реализуются.

public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...