私のコードに似たサンプルコード。
public interface Builder<B, A> {
B build(A a);
}
public class ClientBuilder implements Builder<String, Integer> {
@Override
public String build(Integer i) {
return i.toString();
}
}
public abstract class Client<B> {
protected abstract <A> Builder<B, A> getBuilder();
}
public class ClientClient extends Client<String> {
@Override
protected Builder<String, Integer> getBuilder() {
return null;
}
}
私のClientClient
クラスでは、次のような警告が表示されます。
Unchecked overriding: return type requires unchecked conversion.Found 'Builder<java.lang.String,java.lang.Integer>', required 'Builder<java.lang.String,A>
このエラーを取り除くためにできることはありますか?
を使用できます@SuppressWarnings("unchecked")
が、それは適切ではありません。
私の例A
では常に ですInteger
が、実際のコードA
では 2 つのオブジェクトのいずれかになります。
次のように、インターフェイスに 2 つのメソッドを含めることもできると思います。
public interface Builder<B> {
B build(Integer i);
B build(String s);
}