gpt4 book ai didi

java - Java 中的泛型类转换

转载 作者:行者123 更新时间:2023-12-01 13:11:38 24 4
gpt4 key购买 nike

您好,我有非常相似的类(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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com