为什么编译器请求强制转换

时间:2016-01-24 19:47:43

标签: java

为什么编译器在这里请求显式转换?

public class Predicate<T> {

    private String operand1; 
    private String operator; 
    private T operand2; 
    private Class<T> classType; 

    public Predicate(String operand1, T operand2){
        this(operand1, "=", operand2); 
    }

    @SuppressWarnings("unchecked")
    public Predicate(String operand1, String operator, T operand2){
        this.operand1 = operand1; 
        this.operator = operator; 
        this.operand2 = operand2; 
        this.classType = (Class<T>) operand2.getClass(); 
    }
}

如果类使用泛型T,并请求将通用T类型参数设置为T类型字段,那么为什么编译器会怀疑类型的正确性?
如果进行了强制转换,那么为什么编译器仍然会发出关于转换可能不安全的警告? 另外,我应该担心这个警告吗?

如果您想知道我为什么需要它,我会在稍后使用此类类型在preparedStatement(jdbc)中定义stmt.set。

0 个答案:

没有答案