加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 值为null的引用类型类型?

发布时间:2020-12-14 05:54:50 所属栏目:Java 来源:网络整理
导读:根据: http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html 4.5.2参考类型的变量 引用类型可以保存空引用. 当分配的值为空时,是否可以检索引用类型的声明类型? 具体来说,在使用反射的方法中,我希望该方法是无效的,并且对原始声
根据:
http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html
4.5.2参考类型的变量
引用类型可以保存空引用.

当分配的值为空时,是否可以检索引用类型的声明类型?

具体来说,在使用反射的方法中,我希望该方法是无效的,并且对原始声明的类型进行操作(虽然我知道以下代码段不起作用),例如:

String referenceType = null;
MyReflectionClass.reflectionMethod(referenceType);
...
public static void reflectionMethod(Object referenceType) {
   Class<?> declaredType = referenceType.getClass();
}

如果需要,我不会厌恶使用泛型类型T而不是Object作为声明的参数类型.

编辑:我知道.getClass()在实例上工作,而不是声明的类型.我想知道是否有可能要求引用它的声明类型.由于类层次结构是静态的,因此获取该信息应该没有问题.

编辑2:这里情况明确:Is Java “pass-by-reference” or “pass-by-value”?
Java只是传递值,所以即使使用引用类型,它总是被处理,就像传递值(对象实例)一样(即使内部只传递一个对象指针).这意味着Java实际上并不具有知道它的类型的引用类型(至少在程序员关注的情况下),它们都在值实例中.
因此,无法确定任何空值的类型.

解决方法

在一个单词中,不.尽管如此,尝试找到空引用的成员并不是很有意义的,因为null意味着没有任何东西.你可能最好不要将空作为输入,可能是抛出NullPointerException.

如果你必须处理null,也许最好的方法是明确地传递类引用(或者更好的是直接引用所讨论的方法).

public static void reflectionMethod(Object param,Class<?> referenceType) // null is dis-allowed for referenceType
{
    // ... no need to try to back-track the type from an object
}

如果你只能得到空值,这是很难的(不可能,除非有其他限制)做得比做一个非常幸运的猜测要好得多.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读