Java – enforces return types for classes that implement interfaces
•
Java
How to enforce the getfoo () method in an implementation class to return a list of types of the same implementation class
public interface Bar{
....
List<? extends Bar> getFoo();
}
Now, the class that implements bar returns the object of any class that implements bar I want to make it more strict, so the class that implements bar returns a list of objects of type only in getfoo ()
Solution
Unfortunately, this cannot be enforced by the Java type system
However, you can use the following methods,
public interface Bar<T extends Bar<T>> {
List<T> getFoo();
}
Then your implementation class can be implemented as follows:
public class SomeSpecificBar implements Bar<SomeSpecificBar> {
// Compiler will enforce the type here
@Override
public List<SomeSpecificBar> getFoo() {
// ...
}
}
But nothing can stop another course
public class EvilBar implements Bar<SomeSpecificBar> {
// The compiler's perfectly OK with this
@Override
public List<SomeSpecificBar> getFoo() {
// ...
}
}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
