问题是显然
Stack<T>不是
S extends Stack<T>。Java是强类型的,不会允许您执行此类操作。
您可以
Stack<T>将其强制转换为,在这种情况下,您仍然会收到有关未经检查的转化的警告。这意味着此转换是 不安全的 。
public class SimpleFinder<S extends Stack<T>, T extends Item> implements Finder<S, T> { @Override public S find(S s, int a) { Stack<T> stack = s.getCopy(); return (S) stack; }}或直接使用
Stack<T>代替
S extends Stack<T>,这是我的建议:
public class SimpleFinder<T extends Item> implements Finder<Stack<T>, T> { @Override public Stack<T> find(Stack<T> s, int a) { Stack<T> stack = s.getCopy(); return stack; }}


