内部类的InstantiationException

时间:2017-04-26 06:00:13

标签: java exception inner-classes

我在运行此程序后得到java.lang.InstantiationException,但我期待 Hello World 作为输出。

public class Test {
        public static void main(String[] args) throws Exception {
            new Test().greetWorld();
        }

        private void greetWorld() throws Exception {
            System.out.println(Test2.class.newInstance());
        }

         class Test2 {
            public String toString() {
                return "Hello world";
            }
        }
    }

有人可以告诉我这个例外,以及为什么不打印 Hello World

1 个答案:

答案 0 :(得分:2)

这是因为mongodb://host.example.com/?readPreference=primary不是Test2类。让static使其成功。

static

或者,将static class Test2 { public String toString() { return "Hello world"; } } 移出Test2

考虑一下如何创建Test1的实例。由于它不是静态的,你不能只做

Test2

您需要处于Test1.Test2 obj = new Test1.Test2(); 的非静态环境中。

这就是为什么你不能直接从Test1对象获取构造函数。