问答详情
源自:3-1 Java 获取方法信息

类类型可以创建对象,照你这么说,void d= new void(); 应该也是可以的,可是为什么就不行了?请给解释。

类类型可以创建对象,照你这么说,void d= new void();  应该也是可以的,可是为什么就不行了?请给解释。

提问者:慕设计9979531 2016-11-08 15:34

个回答

  • 昔日情瞳
    2017-02-16 01:02:29

    因为Void这个类的无参构造方法是私有的(private),如图所示

    58a4871e000120cd05000344.jpg

    因为 new 对象的时候需要调用这个构造方法,但是私有的无法访问到,就调用不了,所以就无法通过new的方式来创建类的实例化对象,即使用类的类类型的newInstarce()方法来实例化对象也会抛出异常,如图所示

    58a4872000012c2c05000269.jpg

    总结:构造方法的访问修饰符为私有的(private)的时候,就无法实例化该类了,除非重构个公开的有参构造方法,并调用这个有参的构造方法来实现实例化类的对象。

    如下,创建一个Student类

    public class Student {
    	private Student() { // 私有的无参构造方法
    	}
    
    	public Student(String name) { // 重构一个 公开的 有参 构造方法
    		System.out.println(name);
    	}
    }

    实例化对象时如下图所示。

    http://img.mukewang.com/58a489980001d4bc05100192.jpg

  • Dragon223
    2016-11-08 18:13:13

    因为new 是静态加载类对象,需要调用无参的构造方法,而Void的无参构造方法是私有的,所有不能直接new出来。如果要实例化,只能通过Class.forName()方式。