有没有一种方法可以在Java中实现代数类型?
问题描述:
在Java中,是否有可能强制类有一组特定的子类而没有其他类?例如:有没有一种方法可以在Java中实现代数类型?
public abstract class A {}
public final class B extends A {}
public final class C extends A {}
public final class D extends A {}
我能以某种方式强制执行A的其他子类无法创建吗?
答
给予类A
具有包级别可访问性(并且没有其他构造函数)的构造函数。
谢谢Dave L.,关于没有其他构造函数的一点。
答
你可以把A,B,C,D类放在一个单独的包中,并使A类不公开。
答
你可能想要一个枚举(Java> = 1.5)。枚举类型可以有一组固定值。它具有所有类的好处:它们可以有字段和属性,并且可以使它们实现一个接口。枚举不能被扩展。
实施例:
enum A {
B,
C,
D;
public int someField;
public void someMethod() {
}
}
可选地所有作为嵌套类具有A仅具有私有构造函数。 – 2008-10-04 14:00:55
虽然这并不美观,但是:A.B,A.C ... – 2008-10-04 17:53:24
将静态导入到救援中,marxidad – Apocalisp 2008-10-21 03:47:37