Java重载遇到的问题

戴威 发布于 2012/03/24 17:36
阅读 585
收藏 0

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

我在写工具类的时候写了两个方法

void fun(List l);

void fun(Queue q);

可是问题来了,当我要传入的参数把以上两个接口都实现了,会发生什么?

例如

fun(new LinkedList());

IDE给我的提示是:The method fun(List<?>) is ambiguous for the type Main

如果我吧上面两个方法的位置调换一下,IDE给我的提示就变成了:The method fun(Queue<?>) is ambiguous for the type Main

 

加载中
0
一号男嘉宾
一号男嘉宾

首先,重载是说方法名相同,参数的类型或者个数不同,就叫重载

你传一个对象能满足两个不通的要求或者说你两个方法的参数类型一样?那样的话你这个重载本来就有问题。

0
_DeepBlue
_DeepBlue

强制转型

fun((List)new LinkedList());

fun((Queue)new LinkedList());

0
戴威
戴威

引用来自“梅公子”的答案

首先,重载是说方法名相同,参数的类型或者个数不同,就叫重载

你传一个对象能满足两个不通的要求或者说你两个方法的参数类型一样?那样的话你这个重载本来就有问题。

写方的时候完全没问题,就是调用的时候,编译器迷茫了……XD
0
戴威
戴威

引用来自“guomingchang”的答案

强制转型

fun((List)new LinkedList());

fun((Queue)new LinkedList());

好方法,我先怎么没有想到……
0
牛魔忙
牛魔忙
浩哥说:Main方法出错了......
0
Monkey
Monkey
能不能吧你这两方法整一整啊
一号男嘉宾
一号男嘉宾
我也觉得他这俩方法比较扯蛋~
0
开源中国射线科科长
开源中国射线科科长
一个switch+instanceof 就好了嘛 分别处理不同接口 JDK自己写的反射类 还是用的手写8个基本类型,说起来我都不信SUN的人2起来这么2
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部