编写一个需要Class.class作为java参数的函数

时间:2013-08-01 13:43:26

标签: java class generics

我想编写一个需要Class.class作为参数的函数

示例:

class MyObject{


  public whatTypeGoesHer MyFunction(something1, something2){
//do something with parameters
}

}

class MyObject1{
      MyObject object = new MyObject();

       MyObject1 object2 = object.MyFunction(MyObject1.class,something else);

}

这种类型的调用是我想要实现的,我如何定义“MyFunction”来接受这种类型的参数?

应该是什么而不是“whatTypeGoesHere”?

编辑:

让我重新解释一下这个问题

  1. 我想使用GSON从JSON反序列化类 但是,我发现自己在每个类中编写完全相同的方法,我希望通过类名的不同来反序列化
  2. 这是我的代码:

    public static User fromJSON(String json, Class<?> className) {
        GsonBuilder builder = new GsonBuilder();
        builder.serializeNulls();
        User g1 = builder.create();
        User user = g1.fromJson(json, className.getClass());
        return user;
    }
    

    及其在使用过的类中的调用

    User user =   User.fromJSON(json,User.class);
    

    我想把“fromJSON”方法放到一些utils类中,因为在每个类中它都是完全相同的,它返回的类名不同

    我该怎么做?

2 个答案:

答案 0 :(得分:10)

您需要Class<?>类型的参数:

public void myFunction(Class<?> something1, SomeOtherType something2)

您应该通过Reflection Tutorial

答案 1 :(得分:2)

你的意思是这样的:

  public <T> void MyFunction(Class<T> something1, SomeOtherType  something2){
  // T= type parameter inside method
  }