为什么编译器在这里请求显式转换?
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。