2017-04-17 9 views
0

私はgeneric object poolingを使用してCipherオブジェクトを再利用しています。互換性のない型:com.rh.host.Validator <T>はcom.rh.host.Pool.Validatorに変換できません

Eracom

Pool< Cipher> pool = PoolFactory.newBoundedBlockingPool(10, new CipherPicker("DESede/CBC/NoPadding"), new CipherPickerValidator()); 

PoolFactory

public static <T> Pool<T> newBoundedBlockingPool(int size, ObjectFactory<T> factory, Validator<T> validator) { 
     return new BoundedBlockingPool<T>(size, factory, validator); 
    } 

プール

public interface Pool<T> 
{ 
T get(); 
void shutdown(); 
public boolean isValid(T t); 
public void invalidate(T t); 
} 
} 

バリ

public interface Validator<T> 
{ 

    public boolean isValid(T t); 

    public void invalidate(T t); 
} 

CipherPickerValidator

public final class CipherPickerValidator implements Validator <Cipher> 
{ 

    @Override 
    public boolean isValid(Cipher t) { 
     return true; 
    } 

    @Override 
    public void invalidate(Cipher t) { 
//  return false; 
    } 
} 

私はPoolFactoryにエラーが発生します。 validatorの下に赤い線が表示されます。

エラー

incompatible types: com.rh.host.Validator<T> cannot be converted to com.rh.host.Pool.Validator<T> where T is a type-variable: 
T extends Object declared in method <T>newBoundedBlockingPool(int,ObjectFactory<T>,com.rh.host.Validator<T>) 

私は記事のコードの一部がマングドされているように見えますA Generic and Concurrent Object Pool

答えて

2

に従ってください。

エラーは、それが起こったことは明らかだそのように書かれて

com.rh.host.Pool.Validator 

com.rh.host.Validator 

を割り当てるしようとしています。 2つの無関係なタイプ(Validator)があります。この記事では、独自のファイルにネストされた型を表示しています。

名前ごとに定義が1つだけあることを確認してください。そしておそらくより良い提示された記事を見つける。

関連する問題