I have a method String foo()
in an abstract class which already does a few precomputations but can't deliver the final result the method is supposed to return. So what I want is that each non-abstract class inheriting from my abstract class has to implement foo
in a way that first super()
is called and then the result is computed. Is there a way to force this in java?
相关问题
- Delete Messages from a Topic in Apache Kafka
- Jackson Deserialization not calling deserialize on
- How to maintain order of key-value in DataFrame sa
- StackExchange API - Deserialize Date in JSON Respo
- Difference between Types.INTEGER and Types.NULL in
Something like this?
There's no way to do this in Java. However you can declare one more method which is abstract and call it. Like this:
This way you will be forced to override
calculateFinalResult
. No calling ofsuper
instance is necessary. Also subclasses will not be able to redefine yourfoo()
as it's declared asfinal
.Yes, by redesigning to use the template method pattern and including an abstract method:
Basically if you want to force subclasses to override a method, it does have to be abstract - but that doesn't have to be the method that is called by other code...