等于上课不可能吗?

Oli*_*ler 2 java equals

在Java中,我有一个带签名的函数,其中传入了一个Type:

public Object convert(Object object, Type type) {
}
Run Code Online (Sandbox Code Playgroud)

在函数内部,我想确定Type是否为String,但是当我这样做时

String.class.equals(type.getClass())
Run Code Online (Sandbox Code Playgroud)

Android Studio告诉我'equals()' between objects of inconvertible types 'Class<capture of ? extends Type>' and 'Class<String>'.

我究竟做错了什么?

ysh*_*vit 8

这不是javac错误 - 它是IDE提供的警告(或错误,具体取决于您的设置).

也就是说,在这种情况下,警告是有用的.您要问的type.getClass()是返回的类对象是否等于文字所代表的类对象String.class.鉴于这Type不是一个超类String,我现在可以告诉你,答案是错误的:Type类和String类不同.您的IDE试图告诉您相同的内容.

如果你想弄清楚是什么类型是否实例type代表String类,那么你并不需要getClass():

String.class.equals(type)
Run Code Online (Sandbox Code Playgroud)