1. ホーム
  2. java

[解決済み] raw 型のメンバへのアンチェックの呼び出し

2022-02-24 03:19:43

質問

Android Studio 2.1.2

この警告が出るのですが、原因がわからないようです。raw型は使用していません。

Unchecked call to attachView(DownloadViewContract) as a member of raw type

次のようなインターフェイスがあります。

public interface DownloadPresenterContract {
    interface Operations<DownloadViewContract> {
        void attachView(DownloadViewContract view);
        void detachView();
        void getData();
    }
}

そして、次のような実装です。

public class DownloadPresenterImp implements
        DownloadPresenterContract.Operations<DownloadViewContract> {

    private DownloadViewContract mView;

    private DownloadPresenterImp() {
    }

    public static DownloadPresenterImp getNewInstance() {
        return new DownloadPresenterImp();
    }

    /* Operations */
    @Override
    public void attachView(DownloadViewContract view) {
        mView = view;
    }
}

これは、私のビューのインターフェースです。

public interface DownloadViewContract {
    void onSuccessDownload();
    void onFailureDownload(String errMsg);
}

そして、私のビューであるフラグメントでは

public class DownloadView extends Fragment implements DownloadViewContract {
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        mDownloadPresenterContract = DownloadPresenterImp.getNewInstance();

        /* UNCHECKED MEMBER TO RAW TYPE */
        mDownloadPresenterContract.attachView(DownloadView.this);
    }
    .....
}

を明示的に命名しているので、なぜ警告が出るのか理解できません。 DownloadViewContract をプレゼンターインターフェイスの型として使用します。そして、私のビューは DownloadViewContract インターフェイスを使用することに問題はないと思います。

提案に感謝します。

解決方法は?

mDownloadPresenterContractを型を指定せずに宣言していると思いますので、代わりに以下のように宣言してください。

DownloadPresenterContract.Operations<DownloadViewContract> mDownloadPresenterContract = DownloadPresenterImp.getNewInstance();

mDownloadPresenterContract.attachView(DownloadView.this);