gpt4 book ai didi

java - 在 Java 中,我可以在 instanceof 表达式中使用原始类型文字或类型变量吗?

转载 作者:行者123 更新时间:2023-12-03 20:44:14 24 4
gpt4 key购买 nike

我可以在 instanceof 中使用原始类型文字或类型变量吗?表达?

class MyClass<T> {
{
boolean b1 = null instanceof T; // T erasure -> Object should be used
boolean b2 = 2 instanceof Integer; // Incompatible operands
}

我收到编译错误。有什么方法可以规避这些错误并在 instanceof 中使用原始类型文字/类型变量?表达?

基本上,我想得到保证,不,我永远无法做到这一点。

最佳答案

不,因为类型删除。 MyClass<T> 的一个实例不知道是什么T是。

您需要有 Class<T> 的实例.然后你可以使用 isInstance 方法。一种方法是在构造函数中指定它:

class MyClass<T>
{
private Class<T> clazz;

MyClass(Class<T> clazz)
{
this.clazz = clazz;
}

// Now you can use clazz to check for instances, create new instances ect.
}

对于第二个,问题是第一个操作数,而不是第二个。原始值本身不是 Integer 的实例;盒装版本是:
Object obj = 2;
boolean b2 = obj instanceof Integer;

只要你有一个真正的原始值,你就已经知道类型,所以进行动态类型检查没有多大意义。

关于java - 在 Java 中,我可以在 instanceof 表达式中使用原始类型文字或类型变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4854546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com