泛型方法使用求助

jarodzhao 2018-08-29 10:44:47
在一个常规类中要使用一个泛型方法:
	// 泛型方法
public List<?> screenedList(List<?> list){

return null;
}


方法用途就是对 List 中的对象进行筛选,剔除不需要的对象,然后再把这个 list 返回
求教:如何定义这个泛型方法,方法内如何获取对象?
...全文
268 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jarodzhao 2018-09-30
  • 打赏
  • 举报
回复
结帖!感觉掌握了泛型应用后,知识面一下扩大好多!
jarodzhao 2018-08-29
  • 打赏
  • 举报
回复
引用 4 楼 stacksoverflow 的回复:
给你个例子


import java.util.*;

public class Test {

// 泛型方法
public static <T> void screenedList(List<? extends Object> list, Class<T> holdClass){

for(int i = list.size()-1; i >=0 ; i --){
Object item = list.get(i);
if(item.getClass() != holdClass){
list.remove(i);
}
}
}

public static void main(String[] args){

List list = new ArrayList();
list.add(new Test());
list.add(new Object());
list.add(new Test());
list.add(new Test());

System.out.println(list);
screenedList(list,Test.class);
System.out.println(list);
}

}



多谢朋友回复,上午其实自己找了找相关资料,基本上算实现泛型方法了,也可以解决问题了。
但是感觉不算完美,不能调用泛型对象的方法。
stacksoverflow 2018-08-29
  • 打赏
  • 举报
回复
给你个例子


import java.util.*;

public class Test {

// 泛型方法
public static <T> void screenedList(List<? extends Object> list, Class<T> holdClass){

for(int i = list.size()-1; i >=0 ; i --){
Object item = list.get(i);
if(item.getClass() != holdClass){
list.remove(i);
}
}
}

public static void main(String[] args){

List list = new ArrayList();
list.add(new Test());
list.add(new Object());
list.add(new Test());
list.add(new Test());

System.out.println(list);
screenedList(list,Test.class);
System.out.println(list);
}

}

jarodzhao 2018-08-29
  • 打赏
  • 举报
回复
泛型方法现在已经实现,如何调用泛型对象的方法?!
public class ScrList {
public static void main(String[] args) {
List<String> list = new ArrayList<>();

for (int i = 0; i < 10; i++) {
list.add("#" + i);
}
scrList(list);

List<Integer> list2 = new ArrayList<>();
for (int i = 0; i < 10; i++) {
list2.add(i);
}
scrList(list2);
}

public static <T> List<T> scrList(List<T> list) {

for (int i = 0; i < list.size(); i++) {
T t = list.get(i);
System.out.println(t + " ---- " + t.getClass());
}

return list;
}
}
jarodzhao 2018-08-29
  • 打赏
  • 举报
回复
引用 1 楼 qq_38361634 的回复:
public List<筛选后的对象名>screenedList(List<Object> list){
for(int i = 0 ; i < list.size() ; i++) {
system.out.println(list.get(i));(自写筛选逻辑)
}
}

如何让方法适配多种对象(List中的对象不同)
爱_LOVE 2018-08-29
  • 打赏
  • 举报
回复
public List<筛选后的对象名>screenedList(List<Object> list){
for(int i = 0 ; i < list.size() ; i++) {
system.out.println(list.get(i));(自写筛选逻辑)
}
}
jarodzhao 2018-08-29
  • 打赏
  • 举报
回复
多谢大家的回复,问题解决!

public class ScrList {
public static void main(String[] args) throws Exception{
List<String> list = new ArrayList<>();

for (int i = 0; i < 10; i++) {
list.add("#" + i);
}
scrList(list, String.class);

List<Integer> list2 = new ArrayList<>();
for (int i = 0; i < 10; i++) {
list2.add(i);
}
scrList(list2, Integer.class);
}

public static <T> List<T> scrList(List<T> list, Class<T> clz) throws Exception {

for (int i = 0; i < list.size(); i++) {

T t = list.get(i);

Method method = clz.getDeclaredMethod("toString");

String ss = (String) method.invoke(t);

System.out.println(t + " ---- " + t.getClass() + " ---- " + ss);

}

return list;
}
}

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧