コードをコンパイルすると 4 つの警告が表示されますが、それらを非表示にするにはどうすればよいですか? (@SuppressWarnings の意味ではありません)
PS: 明らかに、これは以前に尋ねられたに違いありませんが、見つからないか、適用できません。
出力
warning: [unchecked] unchecked call to BaseWorker(C) as a member of the raw type BaseWorker
[warn] return new BaseWorker(this);
warning: [unchecked] unchecked conversion
[warn] found : com.crashnote.BaseWorker
[warn] required: com.crashnote.BaseWorker<C>
[warn] return new BaseWorker(this);
warning: [unchecked] unchecked call to SubWorker(C) as a member of the raw type SubWorker
[warn] return new SubWorker(this);
warning: [unchecked] unchecked conversion
[warn] found : com.crashnote.SubWorker
[warn] required: com.crashnote.SubWorker<C>
[warn] return new SubWorker(this);
ソースコード
BaseConfig : BaseWorker をインスタンス化します
public class BaseConfig<C extends BaseConfig> {
public BaseConfig(final Object c) {
}
public BaseWorker<C> getWorker() {
return new BaseWorker(this);
}
}
ベースワーカー
public class BaseWorker<C extends BaseConfig> {
public BaseWorker(final C config) {
}
}
SubConfig : サブワーカーをインスタンス化します
class SubConfig<C extends SubConfig> extends BaseConfig<C> {
public SubConfig(final Object c) {
super(c);
}
@Override
public SubWorker<C> getWorker() {
return new SubWorker(this);
}
}
SubWorker : SubWorker から継承
public class SubWorker<C extends BaseConfig> extends BaseWorker<C> {
public SubWorker(final C config) {
super(config);
}
}
編集
提供された解決策を試しましたが、何らかの理由で失敗しました。
A)
return new BaseWorker<BaseConfig>(this);
結果は
incompatible types
[error] found : BaseWorker<BaseConfig>
[error] required: BaseWorker<C>
[error] return new BaseWorker<BaseConfig>(this);
B)
return new BaseWorker<C>(this);
結果は
cannot find symbol
[error] symbol : constructor BaseWorker(BaseConfig<C>)
[error] location: class BaseWorker<C>
[error] return new BaseWorker<C>(this);
うーん、私は何か間違ったことをしているのかもしれません。ちなみに、これは Java 6 です。