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); } }