我正在努力实现以下目标: 我有这个方法
public String methodName(Userdefinedclass.class,Userdefinedclass obj)
{
//some code
.........
method(Userdefinedclass.class);
method2(obj);
}
我想概括一下这个方法。
挑战在于这里的论点是用户定义的,即它可以改变。所以请帮忙。
答案 0 :(得分:6)
public <T> String methodName(Class<T> c, T obj)
{
method1(c);
method2(obj);
return "some string";
}
void method1(Class c)
{
// Some stuff.
}
答案 1 :(得分:1)
泛型是类型擦除,所以你不能拥有.class的泛型类型。这就是因为在这种情况下,泛型被删除为Object
类型。因此`T.class&#39;不会工作
因此,请使用Class<T>
获取课程,然后继续
答案 2 :(得分:1)
这样可以保持方法签名的完整性:
public <T> String methodName(Class<T> c, T obj)
{
method(c);
method2(obj);
}
但我会用伊万诺维奇的答案。
答案 3 :(得分:0)
如果要概括函数中使用的参数,可以创建一个空接口并强制userDefinedClass实现它。或者你可以用T来实现这个