`

Java解惑80

阅读更多
public class Outer{
    public static void main(String[] args) throws Exception{
        new Outer().greetWorld();
    }
 
    private void greetWorld()throws Exception {
        System.out.println( Inner.class.newInstance() );
    }
 
    public class Inner{
        public String toString(){
            return "Hello world";
        }
    }
}


//挂了


从 5.0 版本开始, 关于 Class.newInstance 的文档叙述道:如果那个 Class 对象“代表了一个抽象类(abstract class),一个接口(interface),一个数组类(array class),一个原始类型(primitive type),或者是空(void);或者这个类没有任何空的[也就是无参数的]构造器;或者实例化由于某些其他原因而失败,那么它就会抛出异常”[JAVA-API]。


一个非静态的嵌套类的构造器,在编译的时候会将一个隐藏的参数作为它的第一个参数,这个参数表示了它的直接外围实例(immediately enclosing instance)
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics