在阅读Reflection API时,我得到了这个“每个Java类型都有一个类实例而类实例本身没有公共的构造函数”。
现在这对我来说真的很混乱。因为我现在读到的东西说的。即使我们没有指定任何类,所有类都有构造函数,一旦我们创建了它的实例,我们默认获得构造函数(即使该类是静态的)。有人可以用简单的词语解释我吗
(显示静态类有构造函数)
public class Reader1 {
private int pageNumber;
private class ReaderName1{
public int getPage(){
return pageNumber;
}
}
static class ReaderFound{
}
}
使用javap
class Reader1$ReaderFound {
Reader1$ReaderFound();
}
答案 0 :(得分:0)
它说:没有public
构造函数。这并不意味着它根本没有构造函数。它有一个private
构造函数,您也可以创建它,如下面给定的类,它也没有public
构造函数。
class Test {
private Test() { }
}
答案 1 :(得分:0)
“每个Java类型都有一个类实例并且类实例本身没有公共构造函数”这意味着java.lang.Class没有公共构造函数,因为只有JVM才能创建java.lang.Class实例,并且每个类都有Java Type有一个java.lang.Class实例。我认为这就是你感到困惑的原因。
答案 2 :(得分:0)
在Java中,您可以通过在继承类中定义public
来禁止private
构造函数 - 对于Class
这意味着:
public final class Class<T> {
private Class() {
//this constructor is private, no other constructor exists or will be generated
}
}
要创建类的实例,存在一些工厂方法,例如Class.forName
。
答案 3 :(得分:0)
直接从官方网站引用。希望它能对您有所帮助。
原始Java类型(布尔,字节,字符,short,int,long,float和double)以及关键字void也表示为Class对象。 类没有公共构造函数。当类加载器调用defineClass方法之一并传递类文件的字节时,Java虚拟机会自动构造Class对象。
https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html