微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

根据:
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
}

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

原文地址:https://www.jb51.cc/java/120867.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐