5

我正在尝试实现以下目标:我有这个方法

public String methodName(Userdefinedclass.class,Userdefinedclass obj)
{

//some code 
.........
method(Userdefinedclass.class);
method2(obj);

}

我想概括这种方法。

挑战在于这里的参数是用户定义的,即它可以改变。所以请帮忙。

4

4 回答 4

6
public <T> String methodName(Class<T> c, T obj) 
{
    method1(c);
    method2(obj);

    return "some string";
}

void method1(Class c) 
{
   // Some stuff.
}
于 2012-11-21T09:01:42.447 回答
1

泛型是类型擦除,因此您不能拥有 .class 泛型类型。那是因为在这种情况下泛型被擦除以Object键入。因此 `T.class' 不起作用

所以改为使用Class<T>来获取课程,然后一起工作

于 2012-11-21T09:06:35.667 回答
1

这使您的方法签名保持不变:

public <T> String  methodName(Class<T> c, T obj)
{
   method(c);
   method2(obj);
}

但我会使用伊万诺维奇的回答。

于 2012-11-21T09:11:11.973 回答
0

如果您想概括函数中使用的参数,您可以创建一个空接口并强制 userDefinedClass 实现它。或者您可以使用 T 来实现这一点

于 2012-11-21T09:04:18.573 回答