Java泛型:如何处理原始类型成员变量并避免警告?

Java泛型:如何处理原始类型成员变量并避免警告?,java,generics,warnings,Java,Generics,Warnings,我有一个类,它有一个名为Argument的原始类型成员变量。这个类只是简单地围绕这个类型,并通过构造函数以一种通用的方式分配所有值,因为参数和传递给构造函数的参数的类型在编译时是未知的 public class ArgumentWrapper { private Argument argument; public ArgumentImplementation(Class<?> type, String name, Object defau

我有一个类,它有一个名为
Argument
的原始类型成员变量。这个类只是简单地围绕这个类型,并通过构造函数以一种通用的方式分配所有值,因为
参数
和传递给构造函数的参数的类型在编译时是未知的

public class ArgumentWrapper {

    private Argument argument;

    public ArgumentImplementation(Class<?> type, String name, 
            Object defaultValue, Set<?> allowedValues, 
            Comparable<?> lowerBound, Comparable<?> upperBound) {
        argument = new Argument<>(type);
        argument.setName(name);
        argument.setDefaultValue(defaultValue);
        argument.setAllowedValues(allowedValues);
        argument.setLowerBound(lowerBound);
        argument.setUpperBound(upperBound);
    }

    // some getters...

}
公共类ArgumentWrapper{
私人辩论;
公共参数实现(类类型、字符串名称、,
对象默认值,设置允许值,
可比下界,可比上界){
参数=新参数(类型);
参数.setName(名称);
参数.setDefaultValue(defaultValue);
参数.setAllowedValues(allowedValues);
参数setLowerBound(lowerBound);
参数。设置上限(上限);
}
//一些能手。。。
}
现在在我的代码中,我得到了很多警告

Argument is a raw type. References to generic type Argument<T> should be 
parameterized
参数是原始类型。对泛型类型参数的引用应为
参数化
在成员和

Type safety: The method setDefaultValue(Object) belongs to the raw type Argument.
References to generic type Argument<T> should be parameterized
类型安全性:方法setDefaultValue(对象)属于原始类型参数。
对泛型类型参数的引用应参数化
将构造函数参数指定给它的位置

我知道我不能将成员更改为
私有参数

你有什么建议来处理这个问题?如何避免这些警告而不引入错误?如何更好地处理泛型类型成员变量?

在注释和反复尝试的帮助下,我自己得到了答案

ArgumentWrapper
类应该是泛型的,泛型类型
T
应该到处使用

public class ArgumentWrapper<T> {

    private Argument<T> argument;

    public ArgumentImplementation(Class<T> type, String name, 
            T defaultValue, Set<T> allowedValues, 
            Comparable<T> lowerBound, Comparable<T> upperBound) {
        argument = new Argument<T>(type);
        argument.setName(name);
        argument.setDefaultValue(defaultValue);
        argument.setAllowedValues(allowedValues);
        argument.setLowerBound(lowerBound);
        argument.setUpperBound(upperBound);
    }

    // some getters...

}
公共类ArgumentWrapper{
私人辩论;
公共参数实现(类类型、字符串名称、,
T默认值,设置允许值,
可比下界,可比上界){
参数=新参数(类型);
参数.setName(名称);
参数.setDefaultValue(defaultValue);
参数.setAllowedValues(allowedValues);
参数setLowerBound(lowerBound);
参数。设置上限(上限);
}
//一些能手。。。
}

您的ArgumentWrapper,因为它包装了一个泛型tyupe,所以也应该是泛型类型。听起来合法。那么,我将如何在我的案例中实现这一点?如果我简单地将类更改为
公共类ArgumentWrapper
,将成员变量更改为
私有参数我在构造函数中引入错误。我不知道如何处理它们。我将接受在我的示例中演示如何执行此操作的答案。向我们展示您的更新代码,并显示完整准确的错误消息如何?谢谢,我现在就收到了。无论如何,我更喜欢用例子来回答问题,而不是简单的回答,因为我必须处理错误(我自己的愚蠢),并且使问题回答过程太长。。。无论如何谢谢你!