当前位置: 首页 > 面试题库 >

isAssignableFrom与引用和原始类型

薛滨海
2023-03-14
问题内容

我想对原始类型和引用类型之间的Java中的isAssignableFrom行为有一个更好的了解。

例如:

System.out.println(boolean.class.isAssignableFrom(Boolean.class)); // false
System.out.println(Boolean.class.isAssignableFrom(boolean.class)); // false

boolean primitive;
Boolean referenceType = true;
primitive = referenceType;
System.out.println(primitive); // true

我知道在分配基元<->引用时会根据需要进行装箱/拆箱,但是我想过,因此isAssignableFrom在上面的前两个示例中将返回true。

有人可以解释为什么它返回false,这里合适的测试是什么?


问题答案:

实际上 不能booleanBoolean变量分配值-但可以使用自动装箱从 转换booleanBoolean

该JavaDoc中制定规则很清楚:

确定此Class对象表示的类或接口是否与指定的Class参数表示的类或接口相同,或者是该类或接口的超类或超接口。如果是,则返回true;否则,返回true。否则返回false。如果此Class对象表示原始类型,则如果指定的Class参数正是此Class对象,则此方法返回true;否则,此方法返回true。否则返回false。



 类似资料:
  • 问题内容: 我很好奇Java的类和double的原始类型之间的性能差异是什么。因此,我创建了一个基准测试,发现类类型比原始类型慢3到7倍。(在本地计算机OSX上为3x,在ideone上为7x) 这是测试: http://ideone.com/fDizDu 那么为什么Double类型要慢得多呢?为什么还要实施它以允许数学运算符? 问题答案: 那么为什么Double类型要慢得多呢? 因为该值包装在需要

  • 问题内容: 我有一个笼子课: 我试图在另一个类main方法中实例化Cage对象: 我收到错误:笼子是原始类型。泛型Cage的引用应参数化。我尝试了几个想法,但对这种棘手的语法感到困惑:o( 问题答案: 是通用类型,因此您需要指定一个类型参数,例如这样(假设有一个): 您可以使用任何扩展的类型(甚至是自身)。 如果省略type参数,那么在这种情况下最终得到的是。但是,即使这是您想要的,您仍应明确声明

  • 问题内容: 考虑以下方法: 和 这两种方法有什么区别?如果没有差异,为什么要使用第二个? 问题答案: 不允许您在列表中添加对象。请参阅下面的程序。这是我们传递给method的特定列表类型。 特定方式,列表是使用特定类型创建的,并传递给method 。不要与 单词 混淆。 具体可以是任何普通对象,例如Dog,Tiger,String,Object,HashMap,File,Integer,Long

  • 问题内容: Eclipse在正在运行的项目中仅使用以下代码(在其中仅包含伪类和main方法)给我警告(标题中): 最后一行触发警告。我不确定我在这里做错了什么,或者实际上我在做什么。我是一名Java学生,正在研究一个可疑的教程,并且试图理解泛型。假设变量x不能说明类型安全性。我尝试将其强制转换为对象类型(我认为它没有任何作用,因为它已经存在了),并且不起作用。 我如何解决此警告? 问题答案: 您声

  • 问题内容: 这是课程: 现在,我试图从类中“反射”此方法: 问题答案: 只有一个。 另一种选择是。 其他原语也是如此。

  • 问题内容: 如果我有一个枚举对象,它将被视为原始对象还是引用? 问题答案: 这是参考类型。Java原语是。 您可以通过调用,获取枚举常量的值,该值由EnumSet和EnumMap使用,并且“以其自然顺序遍历元素(声明枚举常量的顺序)” 您甚至可以将自己的成员添加到枚举类,如下所示: