java 范形做为方法参数的应用中不能理解的问题,希望有高人指点迷津,谢谢```

大菠萝III 2007-08-04 02:41:05
今天在用范形做为参数,方法重载时遇到这样的情况````

想明白到底是什么道理`````想不通,不知道有没有高人指导下```

按常理来说``````

参数相同,返回值不同,重载是会发生错误的````例(1)如:

public static NodeList cyc(NodeList nodeList, int span)
{
``````
}

这个方法不能重载

public static void cyc(NodeList nodeList, int span)
{

}


但是在范形的应用中 如(例2)

public static List<String> cyc(Node node, List<String> listHTMLText)
{

}

可以重载

public static void cyc(Node node, List<Object> listHTMLText)
{

}

我本来以为是List<Object>和List<String>被认为是不同类型的参数,那么即然参类型不同,应该可以重载为

(例3)
public static List<String> cyc(Node node, List<Object> listHTMLText)
{

}

但事实上这样是不能被重载的,载,如例2中的那样````

java中重载必需要参数不同,或参数个数不同,排列不同,
返回值不同不能确定到底调用哪个方法`````
但是像上面那样,在有范形做为参数的情况下,必须要有不同的返回值```
各数,排列相同,只是其中的List为不同的范形时,不能重载,只有当范形值不同,
只有相同List ,范型不同,返回值也不同时,才能被重载,



好奇怪,在重载时同类型的范形参数到底是被认为是相同参数还是不同参数呢????

...全文
344 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
piglet8792 2007-08-10
  • 打赏
  • 举报
回复
6.6
zdmprivate 2007-08-06
  • 打赏
  • 举报
回复
关注中。。。。
大菠萝III 2007-08-06
  • 打赏
  • 举报
回复
再顶一次,看来得去C++取经,C++早就有范型这东西了````不知道C++里是不是也这样的`````
大菠萝III 2007-08-06
  • 打赏
  • 举报
回复
晕倒,结果是这样啊?????郁闷````没有理由的````
insiku 2007-08-06
  • 打赏
  • 举报
回复
直接码 == 字节码
insiku 2007-08-06
  • 打赏
  • 举报
回复
这个是因为泛型机制的问题

public static void cyc(Node node, List<Object> listHTMLText)
{

}

这个是定义泛型自动提供的
但是代码中是不能以返回类型作为方法的区别
但在虚拟机中是可以的 编译器会生成不同的直接码


说的简单点就是 sun的东西 他自己有特权 但是你就不行


List<Object> 跟 List<String> 是同一个类型的
这个跟C++中的template是有区别的
C++中的template会导致模版代码膨胀
henry1451 2007-08-05
  • 打赏
  • 举报
回复
关注
大菠萝III 2007-08-05
  • 打赏
  • 举报
回复
明天还是没人回答就结了好了`````虽然分数不多````大家体谅我这个一星的小菜鸟````
大菠萝III 2007-08-05
  • 打赏
  • 举报
回复
回来继续关注,还是没有解决之道```````5
qq7338367也说list<string> 和list<Object>是一样的```
在java中只能通过参数不同来判断重调方法的调用的,但是当参数中有范型的时候,却通过返回值来判断??那也太有趣了吧?``````
哈哈,还是不明白奇中的道理`````
奋斗并快乐着 2007-08-04
  • 打赏
  • 举报
回复
关注
xukejun_BabyY 2007-08-04
  • 打赏
  • 举报
回复
等待高手的回复,学习!11
大菠萝III 2007-08-04
  • 打赏
  • 举报
回复
晕,怎么贴子好像不更新~~~~`
codeartisan 2007-08-04
  • 打赏
  • 举报
回复
关注
codeartisan 2007-08-04
  • 打赏
  • 举报
回复
我昨天夜里研究了半天,只知道是参数那部分的问题。
楼主后面做的试验也说明了List<String>和List<Object>是同一种类型。
我也试过输出new List<String> instanceof List,结果是true。
codeartisan 2007-08-04
  • 打赏
  • 举报
回复
嘿?我说怎么没有人回答?

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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