gpt4 book ai didi

java - 接受类作为参数的方法

转载 作者:行者123 更新时间:2023-11-30 08:42:13 25 4
gpt4 key购买 nike

我有一个 FTSF 类,或者更确切地说,我应该说 java 枚举,它实现了 MEnum 接口(interface)和 SF 接口(interface),如下所示:

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 关键字通常在类实现接口(interface)时使用。

2) 我知道可以在方法参数中将类作为参数传递,所以在上面,当 FTSF 类在 bCMap 方法中传递时,我正在尝试弄清楚什么在 bCMap 方法中作为参数传递。它是我们编译Java代码时生成的类文件吗?

最佳答案

1) 枚举,就像任何其他类一样,可以实现任意数量的接口(interface)。 (当你问“为什么它可以实现尽可能多的类”时,我有点困惑。一个类只能实现接口(interface),不能实现类。它只能扩展一个类。正如你在后来的评论,MEnumSF 都是接口(interface)。)

2) 当您编译一个名为 T 的 Java 类时,Java 编译器会创建一个对象,它是泛型类 Class<T> 的一个实例。这是一个特殊的类,它包含有关您刚刚编写的类的信息 - 例如它的名称,以及它包含的字段和方法集。它是称为反射的功能的一部分。在您的问题的声明中:

private static final Map<String, FTSF> cmap = MEnum.bCMap(FTSF.class);

表达式 FTSF.class 是对类 Class<FTSF> 的单个实例的引用。所以方法 bCMap() 被传递了一个对该对象的引用;然而,给定上下文,将此参数传递给方法的最可能原因不是因为方法想了解类,而是因为类对象被用作虚拟参数来告诉编译器泛型方法 bcMap返回 Map<String, FTSF>(而不是例如 Map<String, Object>)。

关于java - 接受类作为参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34644735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com