通过传递参数调用泛型方法?

时间:2013-12-06 07:36:15

标签: java generics

我有以下通用方法。

public class MyClass
{
    public <T extends MyObject> T  getResult(Class<T> class, String id){

      //Have some logic

    }
}

由于它是一种通用方法,我需要传递哪种参数?

我的意思是我需要将哪些参数传递给方法?

谢谢!

3 个答案:

答案 0 :(得分:2)

你需要一些扩展MyObject的类:

class A extends MyObject { ... }

如果你有这个,你可以这样调用方法:

A a = myClass.getResult(A.class, "id");

你得到A的实例。

您也可以跳过创建A类并直接使用MyObject,因为约束<T extends MyObject>使T匹配每个扩展MyObject的类,包括MyObject本身。

答案 1 :(得分:0)

鉴于此定义

public <T extends MyObject> T  getResult(Class<T> class, String id)

您需要传递类型的Object(或MyObject和String的子类型)的类。像getResult(MyObject.class, "pickles");这样的东西。然后该方法必须返回MyObject(或子类)的实例。

答案 2 :(得分:0)

您可以调用以下方法

MyObject result = getResult(MyObject.class, "myId");

以下是您的方法getResult

的镜头说明
  • Param 1 - 接受任何类型MyObject
  • 的类
  • Param 2 - 接受任何字符串
  • Retruns - 类型为MyObject的对象。