Biorąc pod uwagę następujący kod:Nie można użyć porównywalny ze ojciec-syn-wnukiem dziedziczenia
public abstract class Participant {
private String fullName;
public Participant(String newFullName) {
this.fullName = new String(newFullName);
}
// some more code
}
public class Player extends Participant implements Comparable <Player> {
private int scoredGoals;
public Player(String newFullName, int scored) {
super(newFullName);
this.scoredGoals = scored;
}
public int compareTo (Player otherPlayer) {
Integer _scoredGoals = new Integer(this.scoredGoals);
return _scoredGoals.compareTo(otherPlayer.getPlayerGoals());
}
// more irrelevant code
}
public class Goalkeeper extends Player implements Comparable <Goalkeeper> {
private int missedGoals;
public Goalkeeper(String newFullName) {
super(newFullName,0);
missedGoals = 0;
}
public int compareTo (Goalkeeper otherGoalkeeper) {
Integer _missedGoals = new Integer(this.missedGoals);
return _missedGoals.compareTo(otherGoalkeeper.getMissedGoals());
}
// more code
}
Problemem jest to, że nie będzie complie Goalkeeper
.
Kiedy próbuję skompilować ten kod Eclipse rzuca:
The interface Comparable cannot be implemented more than once with
different arguments: Comparable<Player> and Comparable<Goalkeeper>
ja nie staram się porównać z Player
, ale z Goalkeeper
i tylko z nim.
Co robię źle?
proszę można naprawić wcięcia i odstępy W przykładzie kodu. To bardzo trudne do odczytania. –
Zrobione, przepraszam! Mam nadzieję, że teraz jest w porządku. – ron
Dlaczego 'nowy ciąg()' w konstruktorów? Ciągi są niezmienne! – fge