我来了一个代码:
public interface IOAttack<Client> {
public void attack(Client c, Client victim);
public void delayedHit(Client c, Client victim);
}
public class PlayerVictim implements AttackInterface<Client> {
@Override
public void attack(Client client, Client victim) {
// TODO Auto-generated method stub
}
@Override
public void delayedHit(Client client, Client victim) {
// TODO Auto-generated method stub
}
}
添加到界面的目的是什么?我读到了关于泛型和所有,arraylists,hashmaps等的内容,但我无法理解为什么它们确切存在,它们的目的是什么。
这个通用怎么能帮助我?
答案 0 :(得分:0)
通常,您的通用类型不会像示例中那样<Client>
,而是像<E>
或<? extends SomeClass>
这样的不存在的类。然后在整个实现中,您可以引用此“临时”类型E
,就像它是真正的类一样。然后,您可以对适合E
答案 1 :(得分:0)
泛型可以帮助限制API的用户在您的类/集合中输入错误的类型。
在你的例子中:
public interface IOAttack<Client> {
public void attack(Client c, Client victim);
public void delayedHit(Client c, Client victim);
}
我也看不到该实用程序,但是如果您更改Client for T或T extends Client,那么此接口的实现者将能够将此接口用于任何类型或仅扩展(或实现)Client的那些类型
例如:
public interface IOAttack<T> {
public void attack(T victim);
public void delayedHit(T victim);
}
我们可以做到以下几点:
public class PlayerVictim implements IOAttack<Dog> {
@Override public void attack(Dog victim) { // TODO Auto-generated method stub
}
@Override public void delayedHit(Dog victim) { // TODO Auto-generated method stub
}
或
public class PlayerVictim implements IOAttack<Player> {
@Override public void attack(Player victim) { // TODO Auto-generated method stub
}
@Override public void delayedHit(Player victim) { // TODO Auto-generated method stub
}
泛型是一种创建适用于许多不同类型的类的强大方法。