Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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 如何编写一个方法来接受任何扩展Throwable的类集合?_Java_Generics - Fatal编程技术网

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));
  }
}