来自超级用户的 This question was migrated,因为可以在堆栈溢出时进行回答。                            Migrated 3年前。                                                                                                            我有一个类FTSF,或者我应该说java枚举,它实现了MEnum接口和SF接口,如下所示:public enum FTSF implements MEnum<FTSF>, SF {private static final Map<String, FTSF> cmap = MEnum.bCMap(FTSF.class); ......... so on and so forth问题:1)由于FTSF是Java枚举,因此为什么它可以实现所需的多个类?我有点困惑,因为implement关键字通常在类实现接口时使用。2)我知道一个人可以将类作为方法参数中的参数传递,因此,上面,当FTSF类在bCMap方法中传递时,我试图找出在bCMap中作为参数传递了什么>方法。是我们编译Java代码时生成的类文件吗? 最佳答案 1)枚举与其他任何类一样,可以实现任意数量的接口。 (当您问“为什么它可以实现所需的多个类”时,我有些困惑。一个类只能实现接口,而不能实现类。它只能扩展一个类。正如您在后面的评论中所阐明的,两个和MEnum是接口。)2)编译名为SF的Java类时,Java编译器会创建一个对象,该对象是通用类T的实例。这是一个特殊的类,其中包含有关您刚刚编写的类的信息,例如其名称以及它包含的字段和方法的集合。这是称为反射功能的一部分。在这个问题的陈述中:private static final Map<String, FTSF> cmap = MEnum.bCMap(FTSF.class);表达式Class<T>是对该类FTSF.class的单个实例的引用。因此,正在向方法bCMap()传递对此对象的引用。但是,在给定上下文的情况下,将此参数传递给方法的最可能的原因不是因为该方法想了解类,而是因为将类对象用作伪参数来告诉编译器泛型方法返回Class<FTSF>(而不是例如bcMap)。
10-08 07:18