bgu*_*uiz 9 java generics subclass java.lang.class
我有一个泛化类,我希望子类如下:
public class SomeTable<T extends BaseTableEntry>
extends BaseTable<T>
{
public SomeTable(int rows, int cols)
{
super(rows, cols, SomeTableEntry.class);
//Does not compile:
//Cannot find symbol: constructor BaseTable(int, int, java.lang.Class<blah.blah.SomeTableEntry.class>)
}
}
Run Code Online (Sandbox Code Playgroud)
...通用化超类的位置是:
public class BaseTable<T extends BaseTableEntry>
{
public BaseTable(int rows, int cols, Class<T> clasz)
{
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
我理解编译器错误,但似乎找不到解决方法,只是在SomeTable构造函数中包含一个额外的参数.
有什么建议?
谢谢!
Ste*_* B. 10
这编译:
public class SomeTable extends BaseTable<SomeTableEntry> {
public SomeTable(int rows, int cols)
{
super(rows, cols, SomeTableEntry.class);
}
}
Run Code Online (Sandbox Code Playgroud)
它适用于演员表:
public class SomeTable<T extends BaseTableEntry> extends BaseTable<T> {
public SomeTable(int rows, int cols)
{
super(rows, cols, (Class<T>)SomeTableEntry.class);
}
}
Run Code Online (Sandbox Code Playgroud)
但是我期待有人发布解释为什么编译器需要为类进行强制转换.
| 归档时间: |
|
| 查看次数: |
16445 次 |
| 最近记录: |