为什么新的Foo(){{}}导致自动子类化

时间:2017-08-29 11:39:15

标签: java

我很好奇为什么下面的内容会创建原始类的子类,从而更改类'签名。 (这里是demo

class Rextester
{  
    private final T2 t1;
    private final T2 t2;
    public static void main(String[] args) {
           new Rextester().test();
    }

    Rextester () {
        t1 = new T2() {{
            setFoo("foo");
            setBar("bar");
        }};

        t2 = new T2() ;
        t2.setBar("bar");
        t2.setFoo("foo");
    }

    private void test() {
        System.out.println("t1: " + t1.getClass()); // class Rextester$1
        System.out.println("t2: " + t2.getClass()); // class T2
    }
}



class T2 {
    private String foo;
    private String bar;

    public String getFoo() {
        return foo;
    }

    public void setFoo(String foo) {
        this.foo = foo;
    }

    public String getBar() {
        return bar;
    }

    public void setBar(String bar) {
        this.bar = bar;
    }

}

为什么t1成为Rextester的子类,而t2保持原样? 这带来了什么好处?

0 个答案:

没有答案