java - 当我们在泛型类中需要多一个参数时,菱形运算符会做什么?
问题描述
class GenericBase<T> {
private T baseVariable;
public T get() {
return baseVariable;
}
public void set(T t){
baseVariable = t;
}
}
class GenericSubTwo<T, V> extends GenericBase<T>{
private V subVariable2;
public V get2(){
return subVariable2;
}
}
public TestClass{
public static void main(String[] args){
GenericBase<Integer> sub2 = new GenericSubTwo<>();
}
}
在这种情况下,菱形运算符是否真的使 new GenericSubTwo<Integer, Integer>(); 或者别的什么..我不明白发生了什么,因为在 GenericSubTwo 我需要两个参数..
解决方案
这真的没关系,因为V
无论如何你都看不到是什么。
V
推断为Object
,因为那是对 的约束V
。
更新
实际上,它似乎V
被推断为?
,因为它可以转换为任何东西。
GenericBase<Integer> sub2 = new GenericSubTwo<>();
// Valid cast: T must be Integer, but V can be anything
GenericSubTwo<Integer, String> x = (GenericSubTwo<Integer, String>) sub2;
推荐阅读
- qt - 如何将渐变设置为 QML TreeView 背景?
- python - python - 尝试使用 Apache 和 mod_wsgi 运行 Django 应用程序时,request.get("https://www.example.com") 不起作用
- python - 我完成了文档上的所有说明,但我仍然收到此错误
- android - 无法将 twitter SDK 3.3.0 添加到 Android Studio 3.1 项目
- arrays - Perl:使用数组列表来选择特定的列
- javascript - Adding a utf-8 font to jsPDF library to print utf-8 Arabic pdfs in Angular application
- buffer-overflow - 返回 libc- 缓冲区溢出
- c# - 在绘制的点之间绘制一条线
- python-3.x - 语法错误 def __repr__(self)
- c# - C# ComboBox get Key and Text in autocomplete