Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回一个类的新集合_Java_Hashset - Fatal编程技术网

Java 返回一个类的新集合

Java 返回一个类的新集合,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

我最近在Java方面遇到了一个问题。我有一个带有超类“Foo”的HashSet
HashSet
。这个集合中充满了
foo
bar
dop
的子类。如何返回一个新的HashSet,该HashSet只包含class
bar
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);