Java 作为外部类的一部分的内部类
假设我有一家玩具店。我有一个网页可以买到这些玩具。每个玩具都有自己的特性,但为了表示一个人类玩具,我有一个名为Java 作为外部类的一部分的内部类,java,inner-classes,Java,Inner Classes,假设我有一家玩具店。我有一个网页可以买到这些玩具。每个玩具都有自己的特性,但为了表示一个人类玩具,我有一个名为HumanToy的类,它有一些特性,比如身高、体重。。。。但是我有一个嵌套属性,它本身就是一个名为HumanLegs的JavaBean,这个类有自己的特性,比如: public class HumanToy { private Double height; private Double weight; private HumanLegs humanL
HumanToy
的类,它有一些特性,比如身高、体重。。。。但是我有一个嵌套属性,它本身就是一个名为HumanLegs
的JavaBean,这个类有自己的特性,比如:
public class HumanToy {
private Double height;
private Double weight;
private HumanLegs humanLegs;
private class HumanLegs {
private Double height;
private Double weight;
}
我的问题是:
这个玩具有静态
HumanLegs
类,这有什么意义吗?我的意思是,从概念上讲,人腿
不能单独存在,它们只能与玩具一起存在,所以我认为这是合乎逻辑的,首先是一个内部类(不是一个分离的类),其次不是静态的,因为同样的原因,我的意思是,仅实例化HumanToy
可以获得HumanLegs
对象,或者要获得HumanLegs
对象,需要一个HumanToy
对象。这是正确的想法吗?是的,这很有意义,因为HumanLegs
保留了对其外部类的引用。
如果将HumanLegs
的实例移动到HumanToy
的另一个实例,则不会删除原始HumanToy
,因为HumanLegs
保留了对它的引用
因此,outerclass在内存中的保存时间至少与innerclass的所有实例相同 当然,如果它们不能在你的概念化世界中分离,那么这就是正确的想法。备注:如果不需要,请不要将对象包装器用于
double
。应写入HumanLegs
成员字段HumanLegs
。顺便说一句,现在很多人更喜欢不可变的对象和构建器,而不是可变的bean。哦,你可以把它叫做Legs
,我想,把它称为HumanToy.Legs
。是的。这很有道理。如果您想在HumanToyLeg
和RobotToyLeg
之间共享代码,那么当然,他们可以自由实现/扩展ToyLeg
接口/类不允许外部类支持它:)