能够声明一个对象但不能实例化它有什么意义
What's the point of being able to declare an object but not instantiating it
例如:
Thread thread1 // would declare a thread variable named thread1
thread1 = new Thread() //would instantiate thread1.
为什么Java在声明变量时不自动实例化它?对象化未实例化的变量是否有目的?
您可能希望为变量分配对在别处创建的实例的引用,因此自动创建实例没有意义。
另外,可能有多个构造函数可供选择,编译器不知道选择哪一个。
此外,变量的类型可能是抽象类型class或接口类型,您不能为其创建实例。您只能创建实现该接口的具体子 classes 或 classes 的实例。
Why wouldn't Java automatically instantiate it when the variable is
declared? Is there a purpose to object variables that are not instantiated?
Java 确实将 instance/object 变量初始化为其默认值。对象的默认值为 null,而基元的默认值为 null。
您可以声明一个变量并仅在需要时实例化它。这是条件代码中一种很好的内存节省技术:instantiate/use仅在需要的情况下引用。
例如:
Thread thread1 // would declare a thread variable named thread1
thread1 = new Thread() //would instantiate thread1.
为什么Java在声明变量时不自动实例化它?对象化未实例化的变量是否有目的?
您可能希望为变量分配对在别处创建的实例的引用,因此自动创建实例没有意义。
另外,可能有多个构造函数可供选择,编译器不知道选择哪一个。
此外,变量的类型可能是抽象类型class或接口类型,您不能为其创建实例。您只能创建实现该接口的具体子 classes 或 classes 的实例。
Why wouldn't Java automatically instantiate it when the variable is declared? Is there a purpose to object variables that are not instantiated?
Java 确实将 instance/object 变量初始化为其默认值。对象的默认值为 null,而基元的默认值为 null。
您可以声明一个变量并仅在需要时实例化它。这是条件代码中一种很好的内存节省技术:instantiate/use仅在需要的情况下引用。