如何使用泛型正确指定Class <?>参数

迈克尔·B

我的目标是实现一个接受类实例的操作,但前提是具体传递的类继承自Collection。

我在无法解决的代码上收到编译器警告。

package com.fun.with.generics;

import java.util.ArrayList;
import java.util.Collection;

public class AcceptTypedClass
{
    // Warning here on 'Collection': ... raw type, references should be parameterized.
    private static void printCollectionClass( Class<? extends Collection> c )
    {
        System.out.println( c.getName() );
    }

    public static void main( String[] args )
    {
        // Warning here on ArrayList: ... raw type, references should be parameterized.
        Class<ArrayList> arrayList = ArrayList.class;
        printCollectionClass( arrayList );
    }
}

我确实理解警告消息,但是如果我通过添加缺少的类型参数(如下所示)来修复警告,则会出现错误。

Class<ArrayList<?>> arrayList = ArrayList.class;

有人可以解释吗?问题是我是否可以编写上面的代码,以便没有任何警告(并且该代码有效)?

拉加夫

您可以将printCollectionClass方法更改

private static <T extends Collection<?>> void printCollectionClass(Class<T> c) {
        System.out.println(c.getName());
    }
public static void main(String[] args) {
        printCollectionClass(ArrayList.class);
    }

这里printCollectionClass将接受从collection继承的类。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在基类的方法中使用泛型指定out参数的类型?

来自分类Dev

在C#中指定泛型类型参数时如何使用“ dynamic”?

来自分类Dev

在R中,如何指定泛型方法采用...(点)参数?

来自分类Dev

如何为函数参数指定泛型类型

来自分类Dev

ClosureParams:如何指定泛型类型在常规参数关闭

来自分类Dev

使用参数指定有效的泛型类型

来自分类Dev

泛型类使用泛型参数

来自分类Dev

以匿名类型作为泛型参数的泛型类型实例,如何正确转换回原始类型?

来自分类Dev

使用泛型作为参数

来自分类Dev

返回泛型而不指定类型参数

来自分类Dev

如何在泛型参数中使用Java Reflection

来自分类Dev

如何在方法参数中使用泛型类型投影?

来自分类Dev

如何在类中使用Comparable作为泛型参数

来自分类Dev

如何使用参数Array <Codable>声明泛型方法?

来自分类Dev

如何使用类型参数符合协议的泛型数组?

来自分类Dev

如何在参数需要类中使用泛型

来自分类Dev

泛型和可变参数 - 如何使用子类

来自分类Dev

如何使用已知类型作为参数创建具有泛型的泛型类?

来自分类Dev

Java泛型参数

来自分类Dev

转发参数时如何保留泛型?

来自分类Dev

如何获取 TypeReference 的泛型参数?

来自分类Dev

如何检查泛型参数关联类型?

来自分类Dev

使用泛型参数覆盖Dart方法

来自分类Dev

使用泛型参数化属性类型

来自分类Dev

在泛型类的成员上使用nameof而不指定类型参数

来自分类Dev

参数化的类和方法:使用Java泛型使方法返回正确的类型

来自分类Dev

正确的方式使用类型提示/泛型来描述类型类(“ type”)的参数

来自分类Dev

使用泛型类型参数强制转换异常:正确的方法吗?

来自分类Dev

如何不带参数实现Init()?使用泛型枚举。无法推断通用参数“ T”。迅速

Related 相关文章

  1. 1

    如何在基类的方法中使用泛型指定out参数的类型?

  2. 2

    在C#中指定泛型类型参数时如何使用“ dynamic”?

  3. 3

    在R中,如何指定泛型方法采用...(点)参数?

  4. 4

    如何为函数参数指定泛型类型

  5. 5

    ClosureParams:如何指定泛型类型在常规参数关闭

  6. 6

    使用参数指定有效的泛型类型

  7. 7

    泛型类使用泛型参数

  8. 8

    以匿名类型作为泛型参数的泛型类型实例,如何正确转换回原始类型?

  9. 9

    使用泛型作为参数

  10. 10

    返回泛型而不指定类型参数

  11. 11

    如何在泛型参数中使用Java Reflection

  12. 12

    如何在方法参数中使用泛型类型投影?

  13. 13

    如何在类中使用Comparable作为泛型参数

  14. 14

    如何使用参数Array <Codable>声明泛型方法?

  15. 15

    如何使用类型参数符合协议的泛型数组?

  16. 16

    如何在参数需要类中使用泛型

  17. 17

    泛型和可变参数 - 如何使用子类

  18. 18

    如何使用已知类型作为参数创建具有泛型的泛型类?

  19. 19

    Java泛型参数

  20. 20

    转发参数时如何保留泛型?

  21. 21

    如何获取 TypeReference 的泛型参数?

  22. 22

    如何检查泛型参数关联类型?

  23. 23

    使用泛型参数覆盖Dart方法

  24. 24

    使用泛型参数化属性类型

  25. 25

    在泛型类的成员上使用nameof而不指定类型参数

  26. 26

    参数化的类和方法:使用Java泛型使方法返回正确的类型

  27. 27

    正确的方式使用类型提示/泛型来描述类型类(“ type”)的参数

  28. 28

    使用泛型类型参数强制转换异常:正确的方法吗?

  29. 29

    如何不带参数实现Init()?使用泛型枚举。无法推断通用参数“ T”。迅速

热门标签

归档