可以将java.lang.Class对象与java中的==进行比较吗?
可能重复:可以将java.lang.Class对象与java中的==进行比较吗?,java,Java,可能重复: 如果我有一门课,比如 Class<? extends MyObject> aClass = ...; 或者我必须做什么 if (aClass.equals(MySubObject.class)) { ... } 此外,除了知道答案之外,我还想知道一个参考,即它的定义 如果可能的话,我更喜欢使用==,因为我发现它可读性更强,速度更快。(显然,它的可读性并没有那么高,速度也没有那么快,但如果有更简单的解决方案,为什么还要使用更复杂的解决方案呢。)您可以使用==,但您什么
如果我有一门课,比如
Class<? extends MyObject> aClass = ...;
或者我必须做什么
if (aClass.equals(MySubObject.class)) { ... }
此外,除了知道答案之外,我还想知道一个参考,即它的定义
如果可能的话,我更喜欢使用
==
,因为我发现它可读性更强,速度更快。(显然,它的可读性并没有那么高,速度也没有那么快,但如果有更简单的解决方案,为什么还要使用更复杂的解决方案呢。)您可以使用==
,但您什么也得不到,因为这正是Class.equals()
所做的
类未定义equals方法,因此它从对象继承。您可以阅读源代码以查看此信息
我尽可能使用
等于
,因为这样我就不需要考虑它了。当我阅读代码(包括我的代码)时,我仍然不需要问自己,对于这个类,==
是否与相等。你可以将类与=
进行比较,对于类
,这与相等是一样的,但您的示例表明,您想知道一个类是否与另一个类存在“is-a”关系。两个等级只有在相同等级时才相等,而且显然Vehicle.class!=汽车类
如果您想知道一辆汽车是否是一辆汽车
,请使用另一个“是”,您会得到一些信息:=
是空安全的。@yankee true,在这种情况下您可以编写MySubObject.class.equals(aClass)
if (aClass.equals(MySubObject.class)) { ... }