我以为我很了解Java泛型,但后来我在java.lang.Enum中遇到了以下内容:
class Enum<E extends Enum<E>>
Run Code Online (Sandbox Code Playgroud)
有人可以解释如何解释这个类型参数?用于提供可以使用类似类型参数的其他示例的加分点.
要求
我正在尝试写一对Observer/ Observable类.我想参数化,Observer以便可以进行类型安全更新调用.想象一下这个版本:
class View implements Observer<Model> {
@Override
public void update(Model model) { render(model); } // no casting:)
}
Run Code Online (Sandbox Code Playgroud)
而不是需要强制转换的版本:
class View implements Observer {
@Override
public void update(Object model) { render((Model) model); } // casting:(
}
Run Code Online (Sandbox Code Playgroud)
尝试
这是我到目前为止所拥有的.我的Observer界面:
public interface Observer<T extends Observable> {
public void update(T observable);
}
Run Code Online (Sandbox Code Playgroud)
和我的Observable抽象类:
import java.util.List;
public abstract class Observable {
private List<Observer<? extends Observable>> observers;
public Observable() {
System.out.println(this.getClass());
}
public void …Run Code Online (Sandbox Code Playgroud)