【问题标题】:Java ambiguous type for protected method受保护方法的 Java 模糊类型
【发布时间】:2014-04-09 18:38:01
【问题描述】:

我正面临 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 可见,因此不会有歧义。

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

【问题讨论】:

  • Class2 相对于Class1 在哪里?在同一个包中?
  • 是的,它们在同一个包中。

标签: java eclipse methods protected ambiguous


【解决方案1】:

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

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

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

【讨论】:

  • 这就是原因。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-20
  • 2012-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
相关资源
最近更新 更多