Java 如何编写一个方法来接受任何扩展Throwable的类集合?
我想将一组类传递给一个方法,这些类扩展了Java 如何编写一个方法来接受任何扩展Throwable的类集合?,java,generics,Java,Generics,我想将一组类传递给一个方法,这些类扩展了Throwable。但是,我的尝试在使用jdk1.6.039的Netbeans中编译失败: package com.memex.sessionmanager; import java.util.Collection; import java.util.Collections; public class GenericsDemo { public void foo(Collection<Class<? extends Throwabl
Throwable
。但是,我的尝试在使用jdk1.6.039的Netbeans中编译失败:
package com.memex.sessionmanager;
import java.util.Collection;
import java.util.Collections;
public class GenericsDemo
{
public void foo(Collection<Class<? extends Throwable>> c)
{
}
public void bar()
{
foo(Collections.singleton(RuntimeException.class));
}
}
但是我现在在使用参数时遇到了问题。具体来说,我想将其分配给一个字段,如下所示:
package com.memex.sessionmanager;
import java.util.Collection;
import java.util.Collections;
public class GenericsDemo
{
private Collection<Class<? extends Throwable>> throwables;
public <T extends Throwable> void foo(Collection<Class<T>> c)
{
throwables = c;
}
public void bar()
{
foo(Collections.singleton(RuntimeException.class));
}
}
package com.memex.sessionmanager;
导入java.util.Collection;
导入java.util.Collections;
公共类泛型演示
{
私人收藏使用
publicsvoidfoo(集合c){
这应该适用于Java 7:
import java.util.Collection;
import java.util.Collections;
public class Generics {
public void foo(Collection<? extends Class<? extends Throwable>> c) {
}
{
foo(Collections.singleton(RuntimeException.class));
}
}
import java.util.Collection;
导入java.util.Collections;
公共类泛型{
公共图书馆(CollectionSorry做了这么多的编辑;我一直搞砸格式。我希望人们在投票前能等一等。:L这非常及时,修复了我的示例,谢谢。但是我现在在使用参数时遇到了问题。我编辑了问题。@MikeFHay,所以你想传递从集合返回的集合。singleton?对不起,示例是虚构的d、 我想传递任何Throwable
类的集合(包括Collections.singleton
在我的示例中返回的Set
),然后我想将该集合分配给一个字段。看起来它在Java 6上也适用,只是花了我一段时间才正确编写。谢谢:)好的,但是如何传递包含多个元素的实际集合?相关:
package com.memex.sessionmanager;
import java.util.Collection;
import java.util.Collections;
public class GenericsDemo
{
private Collection<Class<? extends Throwable>> throwables;
public <T extends Throwable> void foo(Collection<Class<T>> c)
{
throwables = c;
}
public void bar()
{
foo(Collections.singleton(RuntimeException.class));
}
}
incompatible types
found : java.util.Collection<java.lang.Class<T>>
required: java.util.Set<java.lang.Class<? extends java.lang.Throwable>>
public <T extends Throwable> void foo(Collection<Class<T>> c) {}
import java.util.Collection;
import java.util.Collections;
public class Generics {
public void foo(Collection<? extends Class<? extends Throwable>> c) {
}
{
foo(Collections.singleton(RuntimeException.class));
}
}