投射到 T 会引发未经检查的 lint
Casting to T raises unchecked lint
对于以下片段:
public class DriverRequestsColumnFragment<T extends BaseColumnPagerAdapter> {
private T adapter = (T) new RequestsColumnNowAdapter();
}
其中:
public class RequestsColumnNowAdapter extends BaseColumnPagerAdapter {
}
Android Studio(可能还有 Intellij IDEA)引发了一个 "unchecked" lint。
我总是可以用 @SuppressWarnings("unchecked")
来抑制它,但这是处理它的正确方法吗?
更新:
我想要一个 private BaseColumnPagerAdapter adapter;
扩展两个 classes。 (例如 A extends BaseColumnPagerAdapter
和 B extends BaseColumnPagerAdapter
)。
在 DriverRequestsColumnFragment 的构造函数中,我传递了一个布尔值,它创建了一个新的 A
或 B
但这应该是 class 可用的,所以类似于:
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 BaseColumnPagerAdapter
和 RequestColumnNowAdapter extends BaseColumnPagerAdapter
并不意味着 T extends RequestColumnNowAdapter
对于以下片段:
public class DriverRequestsColumnFragment<T extends BaseColumnPagerAdapter> {
private T adapter = (T) new RequestsColumnNowAdapter();
}
其中:
public class RequestsColumnNowAdapter extends BaseColumnPagerAdapter {
}
Android Studio(可能还有 Intellij IDEA)引发了一个 "unchecked" lint。
我总是可以用 @SuppressWarnings("unchecked")
来抑制它,但这是处理它的正确方法吗?
更新:
我想要一个 private BaseColumnPagerAdapter adapter;
扩展两个 classes。 (例如 A extends BaseColumnPagerAdapter
和 B extends BaseColumnPagerAdapter
)。
在 DriverRequestsColumnFragment 的构造函数中,我传递了一个布尔值,它创建了一个新的 A
或 B
但这应该是 class 可用的,所以类似于:
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 BaseColumnPagerAdapter
和 RequestColumnNowAdapter extends BaseColumnPagerAdapter
并不意味着 T extends RequestColumnNowAdapter