Java泛型方法入参和出参如何定义?
public static List<A> getTree(List<B> list) { List<A> nodes = new ArrayList<>();
for (B b : list) {
A a = new A();
a.setName(b.getName());
nodes.add(a);
}
// 其他处理...
return nodes;
}
入参类型为数组的B
返回结果为数组的A
如何改成泛型方法的写法啊,把类A,类B如何替换?
参考下面 Masource
大佬的回复
public static <R, T> List<T> coverts(List<R> req) { try {
for (R r : req) {
// 反射获取R类的所有属性和值
for (Field f : r.getClass().getDeclaredFields()) {
String name = f.getName();
name = name.replaceFirst(name.substring(0, 1), name.substring(0, 1).toUpperCase());
Method m = r.getClass().getMethod("get"+name);
System.out.println(name+"----"+m.invoke(r).toString());// name----张三 age----18
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
回答:
public static <A, B> List<A> getTree(List<B> list,Class<A> aClazz) { List<A> nodes = new ArrayList<>();
for (B b : list) {
//这里很多util包都支持实例化队形,都是通过反射玩的。可以自己换
A a = cn.hutool.core.bean.BeanUtil.toBean(b, aClazz);
nodes.add(a);
//这里如果要其他处理,你就要对泛型加限定符来给与泛型新的属性
//如<A extends people>,则A就限定了只能是people的子类,那么你就可以给A加新的属性如a.setAge(10);
}
return nodes;
}
方法入参一定有一个clazz来实例化对象的,因为类型擦除了
回答:
public static <R, T> List<T> covert(List<R> req) { return null;
}
以上是 Java泛型方法入参和出参如何定义? 的全部内容, 来源链接: utcz.com/p/944728.html