Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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_Generics - Fatal编程技术网

Java 向函数传递/返回带有类型参数的类

Java 向函数传递/返回带有类型参数的类,java,generics,Java,Generics,让我们假设以下方法(比如从番石榴的可食性中): 我不知道如何调用filter并获取Iterable>a4=Iterables.filter(objs,Abc.class);//编译错误-Abc和Abc是不兼容的类型 Iterable>a6=Iterables.>a7=(Iterable().getClass());//编译错误 Iterable>a10=新HashSet我发现它可以编译 public static <T> Iterable<Abc<T>> my

让我们假设以下方法(比如从番石榴的可食性中):

我不知道如何调用
filter
并获取
Iterable>a4=Iterables.filter(objs,Abc.class);//编译错误-Abc和Abc是不兼容的类型
Iterable>a6=Iterables.>a7=(Iterable().getClass());//编译错误

Iterable>a10=新HashSet我发现它可以编译

public static <T> Iterable<Abc<T>> myFilter (Iterable<Abc<T>> myIterator) {
    Class<Abc<T>> myClass = null;
    Iterable<Abc<T>> a3 = Iterables.filter(myIterator, myClass); 
    return a3;
}

public static Iterable有正确答案

这个问题没有令人满意的答案。仅使用无界通配符参数化的类型的类文本在理论上是可行的,我们只是没有它们


您可以生成
Class>ABC=(ClassI-see,但这意味着,我还可以执行以下任一操作:
Iterable>a2=(Iterable@Jirka-x1是的,内联也可以。唯一的缺点是抑制警告的本地性较差。它可以编译,但是
myclass
变量没有内容。但是我可以使用Ben建议的方法:
(Abc)(Object)Abc.class
来分配它。
Set<?> objs = ...;
Iterable<String> a2 = Iterables.filter(objs, String.class);
static class Abc<E> {
    E someField;
}
Iterable<Abc>    a3 = Iterables.filter(objs, Abc.class);
Iterable<Abc<?>> a4 = Iterables.filter(objs, Abc.class); // Compile error - Abc and Abc<?> are incompatible types
Iterable<Abc<?>> a5 = Iterables.filter(objs, Abc<?>.class); // Compile error
Iterable<Abc<?>> a6 = Iterables.<Abc<?>>filter(objs, Abc.class); // Compile error
Iterable<Abc<?>> a7 = (Iterable<Abc<?>>) Iterables.filter(objs, Abc.class); //  Compile error - inconvertible types
Iterable<Abc<?>> a8 = Iterables.filter(objs, new Abc<?>().getClass()); // Compile error
Iterable<Abc<?>> a8a = Iterables.filter(objs, new Abc<Object>().getClass()); // Compile error
Iterable<Abc<String>> a9 = Iterables.filter(objs, Abc<String>.class); // Compile error
Iterable<Abc<?>> a10 = new HashSet<Abc<?>>();
for (Abc<?> a : Iterables.filter(objs, Abc.class)) {
    ((Set<Abc<?>>)a10).add(a);
}
public static <T> Iterable<Abc<T>> myFilter (Iterable<Abc<T>> myIterator) {
    Class<Abc<T>> myClass = null;
    Iterable<Abc<T>> a3 = Iterables.filter(myIterator, myClass); 
    return a3;
}
@SuppressWarnings("unchecked")
public static Class<Abc<?>> ABC = (Class<Abc<?>>)(Object) Abc.class;