为什么在为父项定义的 TreeMap 中输入子项 类 时会出现错误?
Why do I get an error when entering child classes to a TreeMap defined for their parent?
在我的程序中,我有一个抽象 class TelephoneEntry,它包含一个 TelephoneNumber(它实现了 Comparable)和一个地址,然后我有子 classes Person 和 Company 扩展了 TelephoneEntry class.
abstract class TelephoneEntry {
protected TelephoneNumber number;
protected String address;
public abstract void description();
public TelephoneNumber getNumber() {
return number;
}
public void setNumber(TelephoneNumber number) {
this.number = number;
}
}
class Person extends TelephoneEntry {
protected String name;
protected String surname;
public Person(String name, String surname, String address, int code, long number) {
this.name = name;
this.surname = surname;
this.address = address;
this.number = new TelephoneNumber(code, number);
}
@Override
public void description() {
System.out.println("Name: " + name);
System.out.println("Surname: " + surname);
System.out.println("Address: " + address);
System.out.println("TelephoneNumber: " + number.toString());
}
}
class Company extends TelephoneEntry {
protected String name;
public Company(String name, String address, int code, long number) {
this.name = name;
this.address = address;
this.number = new TelephoneNumber(code, number);
}
@Override
public void description() {
System.out.println("Name: " + name);
System.out.println("Address: " + address);
System.out.println("TelephoneNumber: " + number.toString());
}
}
public class TelephoneNumber implements Comparable<TelephoneNumber> {
private int countryCode;
private long localNumber;
public TelephoneNumber(int code, long number) {
countryCode = code;
localNumber = number;
}
@Override
public int compareTo(TelephoneNumber otherNumber) {
if (Integer.compare(getCountryCode(), otherNumber.getCountryCode()) != 0) {
return Long.compare(getLocalNumber(), otherNumber.getLocalNumber());
} else
return Integer.compare(getCountryCode(), otherNumber.getCountryCode());
}
public String toString() {
String out = "";
out += ("+" + countryCode + " " + localNumber);
return out;
}
}
但是当我尝试将它们传递给定义为
的树图时
TreeMap<TelephoneNumber, TelephoneEntry> map = new TreeMap<>();
我收到一条错误消息:
"The method add(TelephoneNumber, Person) is undefined for the type TreeMap<TelephoneNumber,TelephoneEntry>"
"The method add(TelephoneNumber, Company) is undefined for the type TreeMap<TelephoneNumber,TelephoneEntry>"
我不确定这个错误的原因是什么,因为它们都从 TelephoneEntity 继承了使用的密钥。
地图有 put()
方法,而不是 add()
方法,用于添加条目。
将您的代码更改为:
myMap.put(myTelephoneNumber, myTelephoneEntry);
在我的程序中,我有一个抽象 class TelephoneEntry,它包含一个 TelephoneNumber(它实现了 Comparable)和一个地址,然后我有子 classes Person 和 Company 扩展了 TelephoneEntry class.
abstract class TelephoneEntry {
protected TelephoneNumber number;
protected String address;
public abstract void description();
public TelephoneNumber getNumber() {
return number;
}
public void setNumber(TelephoneNumber number) {
this.number = number;
}
}
class Person extends TelephoneEntry {
protected String name;
protected String surname;
public Person(String name, String surname, String address, int code, long number) {
this.name = name;
this.surname = surname;
this.address = address;
this.number = new TelephoneNumber(code, number);
}
@Override
public void description() {
System.out.println("Name: " + name);
System.out.println("Surname: " + surname);
System.out.println("Address: " + address);
System.out.println("TelephoneNumber: " + number.toString());
}
}
class Company extends TelephoneEntry {
protected String name;
public Company(String name, String address, int code, long number) {
this.name = name;
this.address = address;
this.number = new TelephoneNumber(code, number);
}
@Override
public void description() {
System.out.println("Name: " + name);
System.out.println("Address: " + address);
System.out.println("TelephoneNumber: " + number.toString());
}
}
public class TelephoneNumber implements Comparable<TelephoneNumber> {
private int countryCode;
private long localNumber;
public TelephoneNumber(int code, long number) {
countryCode = code;
localNumber = number;
}
@Override
public int compareTo(TelephoneNumber otherNumber) {
if (Integer.compare(getCountryCode(), otherNumber.getCountryCode()) != 0) {
return Long.compare(getLocalNumber(), otherNumber.getLocalNumber());
} else
return Integer.compare(getCountryCode(), otherNumber.getCountryCode());
}
public String toString() {
String out = "";
out += ("+" + countryCode + " " + localNumber);
return out;
}
}
但是当我尝试将它们传递给定义为
的树图时TreeMap<TelephoneNumber, TelephoneEntry> map = new TreeMap<>();
我收到一条错误消息:
"The method add(TelephoneNumber, Person) is undefined for the type TreeMap<TelephoneNumber,TelephoneEntry>"
"The method add(TelephoneNumber, Company) is undefined for the type TreeMap<TelephoneNumber,TelephoneEntry>"
我不确定这个错误的原因是什么,因为它们都从 TelephoneEntity 继承了使用的密钥。
地图有 put()
方法,而不是 add()
方法,用于添加条目。
将您的代码更改为:
myMap.put(myTelephoneNumber, myTelephoneEntry);