你可以这样定义
callFriend:
public <T extends Animal> T callFriend(String name, Class<T> type) { return type.cast(friends.get(name));}然后这样称呼它:
jerry.callFriend("spike", Dog.class).bark();jerry.callFriend("quacker", Duck.class).quack();此代码的好处是不会生成任何编译器警告。当然,这实际上只是前代产品的更新版本,不会增加任何额外的安全性。



