在Java中,我可以在instanceof表达式中使用基本类型文字或类型变量吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Java中,我可以在instanceof表达式中使用基本类型文字或类型变量吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含877字,纯文字阅读大概需要2分钟。
内容图文
我可以在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中,我可以在instanceof表达式中使用基本类型文字或类型变量吗?全部内容,希望文章能够帮你解决在Java中,我可以在instanceof表达式中使用基本类型文字或类型变量吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。