受保护方法的Java模糊类型

时间:2014-03-06 21:14:48

标签: java eclipse methods protected ambiguous

我面临Eclipse的以下错误消息:

  

方法getString(String,BasicNameValuePair [])对于类型Class1

是不明确的

代码如下:

public final class Class1 {
    public static void getString(String requiredArguments, BasicNameValuePair[] dataPairs) {

    }

    protected static void getString(String requiredArguments, byte[] dataBytes) {

    }
}

public final class Class2 {
    public static void callTest() {
        Class1.getString("This is a test", null);
    }
}

callTest()中的代码会导致上述错误。

很明显,null可以转换为BasicNameValuePair[]以及byte[],但请注意protected修饰符。以byte[]为参数的方法根本不应对Class2可见,因此不会模糊不清。

为什么受保护的方法对其他(非子类)类可见并导致此错误?

1 个答案:

答案 0 :(得分:1)

因为这些类在同一个包上?

  

protected修饰符指定只能访问该成员   在它自己的包中(与package-private一样),另外,通过   另一个包中其类的子类。

http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html