Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取接口的名称;“浮动点”;而不是要扩展的类名“;“数据类型A”;_Java_Oop_Interface - Fatal编程技术网

Java 获取接口的名称;“浮动点”;而不是要扩展的类名“;“数据类型A”;

Java 获取接口的名称;“浮动点”;而不是要扩展的类名“;“数据类型A”;,java,oop,interface,Java,Oop,Interface,我是java新手,这里有一个小问题,其中定义了以下类: public interface FloatingPoint extends DataTypeA { , 及 当我使用以下行时: for (int i = 0, size = MetaObject.getEAllReferences().size(); i < size; ++i) { EReference Reference = MetaObject.getEAllReferences().get(i); if

我是java新手,这里有一个小问题,其中定义了以下类:

public interface FloatingPoint extends DataTypeA {
,

当我使用以下行时:

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);
for(int i=0,size=MetaObject.getEAllReferences().size();i
我得到了“DataTypeA”,但我希望接口本身的名称为“FloatingPoint”


有人知道如何解决这样的问题吗!!

你可以使用
java.lang.Class#getInterfaces

它确定类或接口实现的接口 由此对象表示。如果此对象表示类 返回值是一个数组,其中包含表示所有 类实现的接口。接口的顺序 数组中的对象对应于接口名称的顺序 在所表示类的声明的implements子句中 通过这个物体

例如:

ArrayList<String> s = new ArrayList<>();
Class<?>[] interfaces = s.getClass().getInterfaces();
Arrays.stream(interfaces).map(e -> e.getName()).forEach(System.out::println);
这里扩展/实现了哪些类或接口
ArrayList

public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable
公共类ArrayList扩展了AbstractList
实现列表、随机访问、可克隆、java.io.Serializable

继承的类在Java中称为“super”


myClass.super将获得您扩展的类,因此我相信您可以选择ContainedClass.super.getName();-但我必须确保使用少量代码;)

什么是
EClass
Reference
ContainedClass
EOObject
?您尝试调用
getEReferenceType()两次了吗
?还请描述您想要获得什么。例如,“我想要获得接口的名称…”。EClass是针对ECore语言的,因为我使用emf。Reference是对象的包含引用,我使用它来获取包含的类名引用。GetType().getName();我认为@lexicore需要更多的信息。
myClass.super
ContainedClass.super.getName()
是无效的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
public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable