为什么我收到警告未经检查的作业?

时间:2017-09-26 12:43:26

标签: java generics

我有一个像这样定义的类:

public class SymEncryptedData<VerifierType extends JSONable> implements JSONable {
   // ...

   public SymEncryptedData encrypt(Key key, byte[] payload, VerifierType verifier) {
       // ...
   }
}

其中JSONable是一个接口。然后,我像这样创建一个实例:

SymEncryptedData<Verifier> symEncryptedData = new SymEncryptedData<Verifier>().encrypt(randomKey, PAYLOAD.getBytes(), VERIFIER);

有效,但我收到有关未选中分配的警告。这是为什么?我错过了什么?

2 个答案:

答案 0 :(得分:3)

更改

public SymEncryptedData encrypt(Key key, byte[] payload, VerifierType verifier) {

public SymEncryptedData<VerifierType> encrypt(Key key, byte[] payload, VerifierType verifier) {

将原始值分配给参数化变量时,会收到未经检查的赋值警告。

答案 1 :(得分:2)

encrypt返回原始类型SymEncryptedData。添加类型参数,警告应该消失:

 public SymEncryptedData<VerifierType> encrypt(Key key, byte[] payload, VerifierType verifier)