我有三个班级,分别是League
,Team
和Player
,联赛有一个由球队组成的数组,我有一个名为showLeaguetable
的方法,该方法显示了按{ {1}}(这是ranking
类中存在的一种方法),并且团队类具有一组参与者。
Team
League.java
public class League<T extends Team> {
public String name;
private List<T> teams = new ArrayList<>();
public League(String name) {
this.name = name;
}
public boolean add(T team) {
if (teams.contains(team)) {
return false;
}
return teams.add(team);
}
public void showLeaguetable() {
Collections.sort(this.teams);
for (T t: teams) {
System.out.println(t.getName() + ": " + t.ranking());
}
}
}
Team.java
public class Team<T extends Player> implements Comparable<Team<T>> {
private String name;
int played = 0;
int won = 0;
int lost = 0;
int tied = 0;
private ArrayList<T> members = new ArrayList<>();
public Team(String name) {
this.name = name;
}
public String getName() {
return name;
}
public boolean addPlayer(T player) {
if (members.contains(player)) {
System.out.println(player.getName() + " is already on this team");
return false;
} else {
members.add(player);
System.out.println(player.getName() + " picked for team " + this.name);
return true;
}
}
public int numPlayers() {
return this.members.size();
}
public void matchResult(Team<T> opponent,int ourScore,int theirScore) {
String message;
if (ourScore > theirScore) {
won++;
message = " beat ";
} else if (ourScore == theirScore) {
tied++;
message = " drew with ";
} else {
lost++;
message = " lost to ";
}
played++;
if (opponent != null) {
System.out.println(this.getName() + message + opponent.getName());
opponent.matchResult(null,theirScore,ourScore);
}
}
public int ranking() {
return (won * 2) + tied;
}
@Override
public int compareTo(Team<T> team) {
return Integer.compare(team.ranking(),this.ranking());
}
}
Player.java
但是在类public class Player {
private String name;
public Player(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
的行Collections.sort(this.teams);
中,我得到了警告League
,我读到也许是因为我没有实现Comparable接口类的团队,但是我做到了,您可以在一行中看到它:
Unchecked method 'sort(List<T>)' invocation
有人可以帮我吗,谢谢!