如何检查Class是否可转换为类。
huangapple go评论59阅读模式
英文:

How to check if Class<Object> is castable to class

问题

你可以使用以下方式来检查是否可以将 Class&lt;Object&gt; 存储的类强制转换为另一个类,例如 String,但请注意,您不能使用 instanceof

boolean isAssignable = clazz.isAssignableFrom(String.class);

这个方法会返回一个布尔值,指示是否可以将 clazz 强制转换为 String 类或其子类。

英文:

How can I check if Class&lt;Object&gt; 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
    }
}

huangapple
  • 本文由 发表于 2020年7月23日 04:50:44
  • 转载请务必保留本文链接:https://go.coder-hub.com/63042994.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定

  • 开发者交流平台

    本页二维码