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

前端之家收集整理的这篇文章主要介绍了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
}

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

猜你在找的Java相关文章