Java에서 대수 유형을 구현할 수있는 방법이 있습니까?
-
05-07-2019 - |
문제
Java에서 클래스에 특정 서브 클래스 세트가 있고 다른 클래스 세트가 없음을 시행하는 것이 가능합니까? 예를 들어:
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를 별도의 패키지에 넣고 클래스 A를 공개적으로 만들 수 있습니다.
제휴하지 않습니다 StackOverflow