【问题标题】:Null value in method parameter [duplicate]方法参数中的空值[重复]
【发布时间】:2015-07-19 13:53:56
【问题描述】:

我有以下代码

import java.util.List;

public class Sample {

    public static void main(String[] args) {
      test(null);
    }

    static void test(List<Object> a){
        System.out.println("List of Object");
    }
    static void test(Object a){
        System.out.println("Object");
    }
}

我在控制台中得到了以下输出

List of Object

为什么不调用test(Object a)?您能解释一下“列表为”null 是如何实现的吗?

【问题讨论】:

标签: java null type-conversion overloading


【解决方案1】:

简而言之,选择重载中最具体的方法。

在这种情况下,最具体的方法是采用List&lt;Object&gt; 的方法,因为它是Object 的子类型。

Java 用来挑选重载方法的确切算法相当复杂。详情请见Java Language Specification section 15.12.2.5

【讨论】:

    【解决方案2】:

    在这种情况下,总是先具体化。如果将 List 更改为 String,它将打印相同的内容。每个类都是 Object 的子类,所以如果它必须重载,将是更具体的类。

    【讨论】:

      猜你喜欢
      • 2010-10-12
      • 1970-01-01
      • 2013-10-27
      • 2012-05-14
      • 2017-12-30
      • 2021-10-26
      • 1970-01-01
      相关资源
      最近更新 更多