英文:
How to check if Class<Object> is castable to class
问题
你可以使用以下方式来检查是否可以将 Class<Object>
存储的类强制转换为另一个类,例如 String
,但请注意,您不能使用 instanceof
:
boolean isAssignable = clazz.isAssignableFrom(String.class);
这个方法会返回一个布尔值,指示是否可以将 clazz
强制转换为 String
类或其子类。
英文:
How can I check if Class<Object>
stores class that can be casted to another class, e.g. String
? I tried to use clazz.isInstance(String.class)
, but this check always return true, because e.g. String is instance of Object.
Note that I cant use instanceof
.
答案1
得分: 2
你正在寻找 isAssignableFrom
。
字符串是一个对象,但对象不一定是字符串。因此,对象可以赋值给字符串,但反过来不行。
class Scratch {
public static void main(String[] args) {
System.out.println(Object.class.isAssignableFrom(String.class)); //true
System.out.println(String.class.isAssignableFrom(Object.class)); //false
}
}
英文:
You're looking for isAssignableFrom
A String is an Object but an Object is not necessarily a String. So Object is assignable from String, but not the other way around.
class Scratch {
public static void main(String[] args) {
System.out.println(Object.class.isAssignableFrom(String.class)); //true
System.out.println(String.class.isAssignableFrom(Object.class)); //false
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论