您好,我有非常相似的类(class)(汽车、客户、预订)。在这些类中,我具有相同的功能,例如(添加、删除、getItem、getAll 和排序)。
public class Clients {
List<Client> persons = new ArrayList<Client>();
public void add (Client k) {
persons.add(k);
}
public void delete (Client k) {
persons.remove(k);
}
public Client getKlienet(int id) {
for ( Client k: persons) {
if ( k.getId() == id)
return k;
}
return null;
}
public List<Client> getAllClients() {
List<Client> temp = new ArrayList<Client>();
temp.addAll(persons);
return temp;
}
public List<Client> sortujKontakty() {
Collections.sort(persons);
return persons;
}
我想用这些类来处理一个通用类。但我有很多问题..
首先使用函数 getId()
(该函数仅返回 Id 的值),然后使用 sort()
方法。 Compareto()
方法与其他类不同。
所以,我完成了界面:
public interface ManagerInterface <T> {
public void add (T t );
public void delete ( T t);
public T getRecord(int id);
public List<T> getAll();
public List<T> sort();
}
和类(class):
public class RecordManager<T> implements RecordManagerInterface <T> {
private T id;
public T getId() {
return id;
}
public ArrayList<T> record = new ArrayList<T>();
@Override
public void add(T t) {
record.add(t);
}
@Override
public void delete(T t) {
record.remove(t);
}
@Override
public T getRecord(int id) {
for ( T k: record) {
if ( ((Client) k).getId() == id)
return k;
else if ( ((Person) k).getId() == id)
return k;
else if ( ((Reservation) k).getId() == id)
return k;
}
return null;
}
@Override
public List<T> getAll() {
List<T> temp = new ArrayList<T>();
temp.addAll( record);
return temp;
}
@Override
public List<T> sort() {
Collections.sort(record);
return record;
}
请提供任何帮助。
最佳答案
如果您有类似的类,请尝试为它们创建通用接口(interface),
即
interface HasId {
int getId();
}
那么您需要做的就是让您的类实现它,并将您的 RecordManager
更改为
public class RecordManager<T extends HasId> implements RecordManagerInterface <T> {
...
}
这意味着你的 T 必须实现你的接口(interface),
所以你的 get getRecord
方法会简单得多
public T getRecord(int id) {
for ( T k: record) {
if (k.getId() == id)
return k;
}
return null;
}
<小时/>
编辑 假设您的通用界面是
interface CommonInterface<T> extends Comparable<T> {
public int getId();
}
那么你的类的定义将是,即
Person implements CommonInterface<Person> {
...
}
您的RecordManager
class RecordManager<T extends CommonInterface<T>> implements
RecordManagerInterface<T>{
}
这应该可以解决所有排序问题
关于java - Java 中的泛型类转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22813934/