java - 转换为 T 会引发未经检查的 lint

标签 java android generics intellij-idea

对于以下代码 fragment :

public class DriverRequestsColumnFragment<T extends BaseColumnPagerAdapter> {    
    private T adapter = (T) new RequestsColumnNowAdapter();   
}

地点:

public class RequestsColumnNowAdapter extends BaseColumnPagerAdapter {

}

Android Studio(可能还有 Intellij IDEA)引发“未经检查”的 lint。 我总是可以使用 @SuppressWarnings("unchecked") 来抑制它,但这是处理它的正确方法吗?

更新:

我想要一个 private BaseColumnPagerAdapter 适配器; 它可以通过两个类进行扩展。 (例如,A 扩展 BaseColumnPagerAdapterB 扩展 BaseColumnPagerAdapter)。

在 DriverRequestsColumnFragment 的构造函数中,我传递一个 boolean 值,它创建一个新的 AB 但这应该是可用的类,如下所示:

public class DriverRequestsColumnFragment<T extends BaseColumnPagerAdapter> {
    private T adapter ;

    public DriverRequestsColumnFragment(boolean choose){
        if(choose)
            adapter = (T) new A();
        else
            adapter = (T) new B();
    }

}

最佳答案

移自评论:

没有什么强制 T extends RequestColumnNowAdapter 这就是您收到未经检查的强制转换警告的原因。仅仅因为 T extends BaseColumnPagerAdapterRequestColumnNowAdapter extends BaseColumnPagerAdapter 并不意味着 T extends RequestColumnNowAdapter

关于java - 转换为 T 会引发未经检查的 lint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27796839/

相关文章:

Java Generic和Generic Class的继承

c# - 为什么我不能用扩展方法中的泛型类型变量替换 IEnumerable<T>?

java - jdbi 抛出 SQLException : Unknown system variable 'tx_read_only'

Java抽象方法

java - 在 AndroidStudio 的原始文件夹中播放 mp3 文件时,如何修复 java.lang.NullPointerException?

android - 如何在 TEdit 处于焦点时隐藏(并再次显示)软键盘 DELPHI XE7

Java 通用类型和条目

java - Android unicode 西里尔文字符串在传入函数时变为 С

java - 数据插入 mongoDB 集合后触发 MongoDB 事件

java - 将帧保存到文件 onFrameAvailable [Google Project Tango]