Java 返回一个类的新集合
我最近在Java方面遇到了一个问题。我有一个带有超类“Foo”的HashSetJava 返回一个类的新集合,java,hashset,Java,Hashset,我最近在Java方面遇到了一个问题。我有一个带有超类“Foo”的HashSetHashSet。这个集合中充满了foo:bar和dop的子类。如何返回一个新的HashSet,该HashSet只包含classbar或dop的值 我尝试了以下方法: public Set<Foo> getObjectsFromClass(Foo foo) { Set<Foo> objectsFromClass = new HashSet<>(); for (F
HashSet
。这个集合中充满了foo
:bar
和dop
的子类。如何返回一个新的HashSet,该HashSet只包含classbar
或dop
的值
我尝试了以下方法:
public Set<Foo> getObjectsFromClass(Foo foo) {
Set<Foo> objectsFromClass = new HashSet<>();
for (Foo value: hashSet) {
if ((value instanceof Bar) && (foo instanceof Bar))
objectsFromClass.add(value);
if ((value instanceof Dop) && (foo instanceof Dop))
objectsFromClass.add(value);
}
}
return objectsFromClass;
}
公共集getObjectsFromClass(Foo-Foo){
Set objectsFromClass=new HashSet();
for(Foo值:hashSet){
如果((条形图的值实例)和(&(条形图的值实例))
objectsFromClass.add(值);
if((Dop的值实例)和&(Dop的foo实例))
objectsFromClass.add(值);
}
}
返回objectsFromClass;
}
但问题是我必须放弃一个对象的参数,而我只想指定类。如何解决此问题?听起来您希望传入类(而不是类的实例)并使用:
public Set getObjectsFromClass(类为什么我不能构造该集:Set x=getObjectsFromClass(Dop.class);
@username\u HI:因为您声明该方法将返回一个Set
。如果您愿意,我可以更改答案…(现在完成)
public Set<Foo> getObjectsFromClass(Class<? extends Foo> clazz) {
Set<Foo> objectsFromClass = new HashSet<>();
for (Foo value: hashSet) {
if (clazz.isInstance(value)) {
objectsFromClass.add(value);
}
}
return objectsFromClass;
}
Set<Foo> x = getObjectsFromClass(Dop.class);
Set<Foo> x = getObjectsFromClass(String.class); // Error
static <T extends Foo> Set<T> getObjectsFromClass(Class<T> clazz) {
Set<T> objectsFromClass = new HashSet<>();
for (Foo value: hashSet) {
if (clazz.isInstance(value)) {
objectsFromClass.add(clazz.cast(value));
}
}
return objectsFromClass;
}
Set<Dop> dops = getObjectsFromClass(Dop.class);