Java:Class 和Class:从类的内部/外部使用时的差异
我有一个类需要使用Class
参数(参见我之前的半相关问题 )。 它是:
public class BaseTable { protected Class mClass; ... public BaseTable(int rows, int cols, Class clasz) { ... mClass = clasz; } public BaseTable(int rows, int cols) { this(rows, cols, StringTableEntry.class); //Does NOT compile: //expected [int, int, Class], but got //[int, int, Class] } ... }
我想知道为什么构造函数(带有2个参数)不起作用,但是当我从外部类调用完全相同的东西时,如下所示:
mSomeTable = new BaseTable(2, 2, StringTableEntry.class);
它编译和运行没有抱怨。 为什么这样,以及如何解决这个问题?
谢谢!
具有generics类型参数的类的构造函数可用于构造具有任何类型(适合类声明中的边界)的类。 那么,如果有人说:
new BaseTable(rows, cols)
?
要解决此问题,请使用静态工厂方法:
public static BaseTable newStringTableEntryBaseTable( int rows, int cols) { return new BaseTable (rows, cols, StringTableEntry.class); }
或者您可以创建一个子类:
class StringTableEntryBaseTable extends BaseTable { StringTableEntryBaseTable(int rows, int cols) { super(rows, cols, StringTableEntry.class); } }