هل هناك طريقة لتنفيذ الأنواع الجبرية في جافا؟
-
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 {}
هل يمكنني بطريقة أو بأخرى فرض عدم إمكانية إنشاء فئات فرعية أخرى من 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
مُنشئ يتمتع بإمكانية الوصول على مستوى الحزمة (وليس مُنشئًا آخر).
شكرًا، ديف إل، على القليل من المعلومات حول عدم وجود مُنشئين آخرين.
وربما كنت ترغب في التعداد (جافا> = 1.5). نوع التعداد يمكن أن يكون مجموعة من القيم الثابتة. وكان لديه كل الأشياء الجيدة من فئة: أنها يمكن أن تحتوي على حقول والممتلكات، ويمكن أن تجعل منهم تنفيذ واجهة. لا يمكن أن تمتد إلى التعداد.
مثال:
enum A {
B,
C,
D;
public int someField;
public void someMethod() {
}
}
هل يمكن وضع الدرجة A، B، C، D في مجموعة منفصلة وجعل فئة A يست عامة.
لا تنتمي إلى StackOverflow