在Java中的方法中传递和使用Class

时间:2014-12-10 23:59:00

标签: java class parameters parameter-passing

void methodA() {
  methodB(ClassA.class)
}

void methodB(Class classname) {
  classname a; //not correct
  HashMap<String, classname> hash = new HashMap<>(); //not correct
}

IDE抱怨它不正确。

我想做的事情就像被评论为//不正确。为什么不正确?我该怎么做?

2 个答案:

答案 0 :(得分:3)

您不能将变量名称用作类型名称,因此methodB不会编译。

但是,您可以为方法使用类型参数。尝试

<T> void methodB(Class<T> clazz) {
    T a;
    HashMap<String, T> hash = new HashMap<>();
}

答案 1 :(得分:0)

您不能将变量名称用作必须作为参数传递的任何方法的类型。否则会产生编译错误。