java - 重载解析应该选择私有(private)方法吗?

标签 java

考虑这段代码:

class Foo {
    public void doIt(String... strs) {
        System.out.println("this is varargs");
    }

    private void doIt(String str) {
        System.out.println("this is single");
    }
}

class Bar {
    public static void main (String[] args) {
        new Foo().doIt("");
    }
}

javac 1.6.0_29版本编译失败,提示:

VarArgsError.java:14: doIt(java.lang.String) has private access in Foo
  new Foo().doIt("");
           ^
1 error

是的,这是愚蠢的代码,至少有两个明显的解决方法,但我很好奇。基于 section 15.12.2 of the specification ,这个编译错误似乎是 javac 中的一个错误,因为第一步应该删除非可变参数 doIt,因为根据 section 6.6.1 无法访问它.我是否在查找算法中遗漏了一些其他细节,或者这是否像我认为的那样明显错误?

最佳答案

你没有错过任何东西。 这是一个已知的错误。

作为 Qwe评论,这里是一个适当的错误归档的链接: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6746184

关于java - 重载解析应该选择私有(private)方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9370700/

相关文章:

java - 在 Unity 5 中使用 Hazelcast 客户端

java - Spring 服务的可选嵌套注入(inject)

java - Jama.Matrix ClassNotFoundException

Java 检查端口是否打开且可供其他计算机访问

java - 如何编写 jSTL 而不是 scriptlet?

java - 在java中控制线程

java - 无法在我的另一台电脑上运行相同的 servlet/hibernate 项目

java - C# 中有 Integer 类吗?

java - 安装 Apache Tomcat 时在选择 Java 路径时显示错误

java - 是否可以嵌套 Hazelcast Jet 管道,以便内部管道可以计算外部管道的结果?