Java重载
我在一次采访中被问到这个问题 有人能解释一下吗Java重载,java,overloading,Java,Overloading,我在一次采访中被问到这个问题 有人能解释一下吗 public class A{ public void show(List <String>list1,List<Integer>lists2){...} public void show(List <Integer>list1,List<String>lists2){...} } public class B{ public static void main(..){
public class A{
public void show(List <String>list1,List<Integer>lists2){...}
public void show(List <Integer>list1,List<String>lists2){...}
}
public class B{
public static void main(..){
A a=new A();
List<String> list1;
List<Integer>lists2;
a.show(list1,lists2);
}
}
公共A类{
公共无效显示(列表1、列表2){…}
公共无效显示(列表1、列表2){…}
}
公共B级{
公共静态空干管(…){
A=新的A();
清单1;
列表2;
a、 显示(列表1、列表2);
}
}
我说过要调用2函数。。但当我在neatbeans工作时,它给出了调用同名函数的错误。。。???
为什么这里不使用重载概念呢?由于,该方法的参数将变成List
public void show(List list1, List list2);
public void show(List list1, List list2);
因此成为无效代码。Java泛型在编译时强制执行,但集合的类型被删除,剩下的是一个重复的方法。在IDE中,您会得到一些关于“同类型擦除”的消息 下面是我喜欢的关于它的一个很好的讨论: 首先,从一个类声明(实际上是从类A)中删除“public” 其次,编译器正在以
show(list,list)
的形式读取参数,因此它提供了相同的方法,并且这里没有发生重载。
由于两个参数都是显示(列表,列表)
请记住,泛型用于区分对象类型而不是返回类型
希望它能工作。您的代码无法编译。两种
show
方法具有相同的擦除。