我面临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
可见,因此不会模糊不清。
为什么受保护的方法对其他(非子类)类可见并导致此错误?
答案 0 :(得分:1)
因为这些类在同一个包上?
protected修饰符指定只能访问该成员 在它自己的包中(与package-private一样),另外,通过 另一个包中其类的子类。
http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html