ary*_*axt 13 java comparison android class
我如何比较2个班级?
虽然class是MyClass的类型,但以下if语句永远不会通过:
public void(Class class) {
if (class == MyClass.class){
}
}
Run Code Online (Sandbox Code Playgroud)
Car*_*ano 36
if (clazz.equals(MyClass.class)) {
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,上课是一个保留字.
Mik*_*uel 10
测试是否clazz是(子)类型的MyClassdo
MyClass.class.isAssignableFrom(clazz)
Run Code Online (Sandbox Code Playgroud)
来自javadoc Class.isAssignableFrom
确定此Class对象表示的类或接口是否与指定的Class参数表示的类或接口相同,或者是它们的超类或超接口.如果是这样,它返回true; 否则返回false.如果此Class对象表示基本类型,则如果指定的Class参数恰好是此Class对象,则此方法返回true;否则返回true.否则返回false.
具体来说,此方法测试是否可以通过标识转换或扩展引用转换将指定的Class参数表示的类型转换为此Class对象表示的类型.有关详细信息,请参阅Java语言规范,第5.1.1和5.1.4节.
所以
Object.class.isAssignableFrom(String.class)
Run Code Online (Sandbox Code Playgroud)
是真的,因为每个人String也是一个Object但是
String.class.isAssignableFrom(Object.class)
Run Code Online (Sandbox Code Playgroud)
是假的,因为不是所有Object的都是Strings.
名称" isAssignableFrom"来自这样一个事实:
Class1 x = (Class2) null;
Run Code Online (Sandbox Code Playgroud)
是合法的
Class1.class.isAssignableFrom(Class2.class)
Run Code Online (Sandbox Code Playgroud)
即,我们可以指定字段或变量静态类型Class1到来的值从它的静态类型是一个表达式Class2.
您可以使用==或.equals()比较Class对象.
例:
class MyClass
{
public static void main (String[] args) throws java.lang.Exception
{
MyClass m = new MyClass();
if (MyClass.class == m.getClass())
{
System.out.println("it worked");
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用instanceof运算符来检查实例是属于特定类还是其子类.
class MyClass{}
class SubClass extends MyClass{}
public static void main(String args[]) {
SubClass object = new SubClass();
if (object instanceof MyClass) {
System.out.println("It works, too");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16811 次 |
| 最近记录: |