Java 创建泛型类以传递泛型类型(对象或列表)
我试图解决一个问题,我必须创建一个类,将对象或对象列表作为泛型类型。我不想创建多个类,因为我有所有其他公共字段 以下是我所做的,但我不确定从长远来看是否安全 主课Java 创建泛型类以传递泛型类型(对象或列表),java,generics,Java,Generics,我试图解决一个问题,我必须创建一个类,将对象或对象列表作为泛型类型。我不想创建多个类,因为我有所有其他公共字段 以下是我所做的,但我不确定从长远来看是否安全 主课 public class TestGeneric{ public static void main(String[] args) { List<Cat> cats = new ArrayList<>(); cats.add(new Cat("Tom"));
public class TestGeneric{
public static void main(String[] args) {
List<Cat> cats = new ArrayList<>();
cats.add(new Cat("Tom"));
cats.add(new Cat("Jerry"));
cats.add(new Cat("Billi"));
Dog dog = new Dog("Bow");
new Rat<>(cats).instOf();
System.out.println();
new Rat<>(dog).instOf();
}
}
要作为单个对象或列表传递的另一个类
class Dog {
private String name;
public Dog() {}
public Dog(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Dog [name=" + name + "]";
}
}
class Cat {
private String name;
public Cat() {}
public Cat(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Dog [name=" + name + "]";
}
}
请建议这是正确的方法,还是有其他更好的方法
单个实例可以很容易地表示为带有一个条目的列表。甚至还有Collections.singletonList()
library方法将单个对象转换为列表
你将要发明一个复杂的设计,将大量的知识投入到这个耗子类中。你宁愿去吃晚饭
- 动物接口或基类(用于Cat/Dog中的常用方法)
- 简单地让
类然后使用Rat
,或者可能是List
List对于您所展示的示例,您应该提供一个
,根据类型来做您想做的“事情”:消费者
class Rat<T> { private T obj ; private Consumer<T> consumer; public Rat(T t, Consumer<T> consumer) { this.obj = t; } public void instOf() { consumer.accept(obj); } }
class Rat<T> { private T obj ; private Consumer<T> consumer; public Rat(T t, Consumer<T> consumer) { this.obj = t; } public void instOf() { consumer.accept(obj); } }
class Rat { private Runnable r; public Rat(Runnable r) { this.r = r; } public void instOf() { r.run(); } }