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

回到顶部