我们都知道Object的状态是它的属性(实例变量)的值,但是如果类没有任何属性(没有继承的属性),那么Object的状态是什么这样的课。
答案 0 :(得分:4)
此类对象有一个词 - 无状态。
答案 1 :(得分:3)
没有父类没有Java类这样的东西。将使用默认父代,例如java.lang.Object
。
至少每个类的实例都有两个属性:引用地址和Class
类型。注意,并非每个类都可以实例化。 ClassLoader
中还使用了一些空格,任何字符串可能(或可能不)被实习。对于JDK和运行时平台的特定版本,此实际实现可能略有不同,JIT可以添加其他优化。但是,作为Java开发人员,您不负责此内存管理,我会对premature optimization保持警惕。
答案 2 :(得分:0)
第一件事
如果开发人员没有写Object
,我们在java中编写的任何类都会默认扩展extends
类。
所以每个班级肯定都会有一个家长毫无疑问至少Object
班。
第二
如果你没有在你的类中放置任何属性,显然它将获得除private之外的所有实例变量都会继承到你的类。
因此它将具有至少object
状态,但它不会用于任何目的
答案 3 :(得分:0)
没有数据成员和指向其他对象的链接的对象是无状态对象,并且此形式的几乎没有任何用处。
由于它的方法,这种类可以是有用的。它可以......
答案 4 :(得分:0)
我们将这些对象称为无状态。顾名思义,他们没有州。
参考其他答案/评论,即使每个Java对象隐式扩展Object
,请注意Object
has no fields。因此,即使每个对象都有运行时地址和类属性,但出于所有实际目的,您仍然可以将某些对象视为无状态。
接下来,无状态对象毫无用处肯定是不为真!您可以使用无状态对象:
1)对具有类似功能的功能进行分组,类似于java.lang.Math
,它对数学函数进行分组。
2)将功能作为参数传递,例如Comparator<T>
可用于对未实现Comparable<T>
的对象进行排序,并且它绝对不需要状态。
无状态对象在某种程度上类似于不可变对象:它们的状态永远不会被改变,因此它们始终是线程安全的。
您可能还希望看到区分会话状态和实例状态的JEE Stateless Session Beans。