Như chúng ta đã biết rằng lớp java enum:Làm thế nào để sử dụng lại mã trong nhiều Enum
- ngầm kéo dài java.lang.Enum;
- không thể kéo dài từ bất kỳ lớp học enum nào khác.
Tôi có nhiều lớp enum, như dưới đây:
enum ResourceState {
RUNNING, STOPPING,STARTTING;//...
void aMethod() {
// ...
}
}
enum ServiceState {
RUNNING, STOPPING,STARTTING,ERROR;//...
void aMethod() {
// ...
}
}
phương pháp aMethod()
trong enum ResourceState
và ServiceState
là giống hệt nhau.
trong OOP, nếu ResourceState
và ServiceState
không enum, họ nên trừu tượng cùng phương pháp để một lớp trừu tượng siêu, như thế này:
abstract class AbstractState{
void aMethod() {
// ...
}
}
nhưng ResourceState là không thể kéo dài từ AbstractState, Bạn có bất cứ ý tưởng để làm việc xung quanh?
Ý của bạn là gì? Không có tham chiếu của cả hai enum? Nếu đó, bạn có thể trích xuất logic thành một phương thức tĩnh. –
Đó là những gì tôi đang làm bây giờ, nhưng tôi đang tìm kiếm một giải pháp tốt hơn – BlackJoker