class Test { interface IFactory { Object m(); } @interface Anno {} enum E {} interface I {} static class Foo { } void foo(IFactory cf) { } void testAssign() { IFactory c1 = Anno::new; IFactory c2 = E::new; IFactory c3 = I::new; IFactory c4 = Foo::new; IFactory c5 = 1::new; foo(Anno::new); foo(E::new); foo(I::new); foo(Foo::new); foo(1::new); } }