相关疑难解决方法(0)

参数化类的原始使用

我编写了一个辅助方法,用于通过反射获取指定类型的静态字段的值。代码工作正常,但我在线收到“参数化类的原始使用”警告:

final List<Collection> fields = getStaticFieldValues(Container.class, Collection.class);
Run Code Online (Sandbox Code Playgroud)

问题是类型参数 T 可以是泛型类型。有没有办法重写方法getStaticFieldValues来解决这个问题?

代码清单:

import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;

import java.lang.reflect.*;
import java.util.*;

import org.junit.Test;

public class GenericsTest {

    @Test
    public void test() {
        // Warning "raw use of parameterized class 'Collection'"
        final List<Collection> fields = getStaticFieldValues(Container.class, Collection.class);
        assertEquals(asList("A", "B", "C"), fields.get(0));
    }

    private static <T> List<T> getStaticFieldValues(Class<?> fieldSource, Class<T> fieldType) {
        List<T> values = new ArrayList<>();
        Field[] declaredFields = fieldSource.getDeclaredFields();
        for (Field field : declaredFields) {
            if (Modifier.isStatic(field.getModifiers()) && …
Run Code Online (Sandbox Code Playgroud)

java generics

53
推荐指数
1
解决办法
9万
查看次数

缺少泛型类Class <T>的类型参数,其中T是类型变量

我使用Oracle JDK 7,当我构建项目时,我收到了以下消息:

missing type arguments for generic class Class<T> where T is a type-variable: 
T extends Object declared in class Class
Run Code Online (Sandbox Code Playgroud)

这是班级:

public class Among {
private static final Class<?>[] EMPTY_PARAMS = new Class[0]; //warning line
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决它.它在很多地方使用,我有很多警告.

java generics java-7

8
推荐指数
1
解决办法
9454
查看次数

标签 统计

generics ×2

java ×2

java-7 ×1