chr*_*s01 5 java oop inner-classes
可以说我有一个正在做一些工作的C类。
为此,我需要一个非常简单的辅助类H(例如,一对或三元组的表示)。H仅在C中需要。
我将H放在C内。
class C
{
void foo ()
{
// ... use H to do the job more easy ...
}
class H
{
// very simple and contained stuff
}
}
Run Code Online (Sandbox Code Playgroud)
将H放在C中是一个好主意吗?我这样做是为了将其包含在我认为应该存在的地方,并且没有其他地方。但是我不确定这是不是好的设计。
更多的附录:
第一:如果 H 对象应该在没有拥有 C 实例的情况下存在,那么 H 应该是static。您甚至可能想将其设为私有。
然后,请记住:这里有一个内部类,因此 H 的全名实际上类似于whatever.package.com.CH。换句话说:你确实将 H 与 C 联系起来。
如果你在某个时候决定 H 有足够的其他方面使其值得成为“自己的”东西怎么办?然后您可能需要接触更多代码,将您的whatever.package.com.CH转换为whatever.package.com.H。
因此,您可以考虑将 H 设为顶级类,但不要将其公开。所以你把它保留在C.java中,但不是作为内部类!
(但是当然,这实际上取决于“风格”,我认为 Google java 编码标准告诉你每个 .java 文件只能有一个顶级类)
最后的话:如果有办法把你的 H 类变成可以在其他地方使用的东西,那么我会继续并立即将其设为自己的公共类。如果重用看起来合理,请编写您的代码,以便可以轻松地重用!3 值元组听起来不像是特定于任何事物的,所以它听起来像是可以重用的候选者。