它是可能的,在爪哇,强制执行这类具有特定的子类,并没有其他人吗?例如:

public abstract class A {}
public final class B extends A {}
public final class C extends A {}
public final class D extends A {}

我可以以某种方式强制执行,没有任何其他类的一个可能曾经被创造了?

有帮助吗?

解决方案 4

教会编码的救援:

public abstract class A {
  public abstract <R> R fold(R b, R c, R d);
}

只有三个实现可能的:

public final class B extends A {
  public <R> R fold(R b, R c, R d) {
    return b;
  }
}

public final class C extends A {
  public <R> R fold(R b, R c, R d) {
    return c;
  }
}

public final class D extends A {
  public <R> R fold(R b, R c, R d) {
    return d;
  }
}

其他提示

给类 A 一个构造与包级别访问(以及没有其他的构造).

谢谢,Dave L.,用于关于没有其他的构造方法。

你可能想要一个枚举,(Java>=1.5).枚举的类型可以有一套固定的价值观。并且它拥有的所有东西的一类:他们可以有领域和特性,并可以使他们实现一个接口。枚举不可延长。

例如:

enum A {

  B,
  C,
  D;

  public int someField;

  public void someMethod() {
  }


}

你可以把A类、B类、C、D在一个单独的包装和作出类的一个不公开的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top