我有两种方法,如下所示
private List getIds(String name, List cats) {
List catIds = new ArrayList<>();
for (Cat cat : cats) {
if (cat.getName().equals(name)) catIds.add(cat.getId());
}
return catIds;
}
private List getIds(String name, List dogs) {
List dogIds = new ArrayList<>();
for (Dog dog : dogs) {
if (dog.getName().equals(name)) dogIds.add(dog.getId());
}
return dogIds;
}
我的猫狗课程如下
public class Cat {
String name;
Long id;
// additional variables
// getters and setters
}
public class Dog {
String name;
Long id;
// additional variables
// getters and setters
}
为了避免冗余,我想将上述两种方法转换为单一的泛型方法.
我尝试了以下内容
private List getIds(String name, List objects) {
List ids = new ArrayList<>();
for (T object : objects) {
if (object.getName().equals(name)) ids.add(object.getId());
}
return ids;
}
但它没有成功,因为它抱怨通用T没有getName或getId
这里Cat和Dog是内置的java类.因此,我无法执行继承并为其提供超类Animal,其名称和id为数据变量.
有没有办法在不实现继承的情况下完成合并上述两种方法?