草庐IT

overloading

全部标签

Java 7 使用可变参数重载

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:bugwithvarargsandoverloading?谁能给我解释一下这个是如何工作的:classVararg{staticvoidvararg(int...x){System.out.println("Integer...");}staticvoidvararg(long...x){System.out.println("long...");}publicstaticvoidmain(String[]args){ints=0;vararg(s,s);}}获取编译时错误classVararg{staticv

java - 子类中的方法可以重载父类(super class)中的方法吗?

Java代码:classP{publicvoidhello(){}}classCextendsP{publicvoidhello(Strings){}}我的问题是:类C中的hello是否重载了父类(superclass)P中的同名对象?我的friend说他们不是因为他们不在同一个类(class)。 最佳答案 采用更正式的方法,Java7的Java语言规范指出:Iftwomethodsofaclass(whetherbothdeclaredinthesameclass,orbothinheritedbyaclass,oronedecl

java - 在 Java 的重载方法中使用 null

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:MethodOverloadingforNULLparameter以下代码编译正常。publicclassMain{publicvoidtemp(Objecto){System.out.println("ThemethodwiththereceivingparameteroftypeObjecthasbeeninvoked.");}publicvoidtemp(Strings){System.out.println("ThemethodwiththereceivingparameteroftypeString

java - JAVA中重载方法的调用顺序

我正在学习一些java考试,我遇到了这个问题://Writetheoutputofthisprogram:publicstaticvoidmethod(Integeri){System.out.println("Integer");}publicstaticvoidmethod(shorti){System.out.println("short");}publicstaticvoidmethod(longi){System.out.println("long");}//...publicstaticvoidmain(String[]args){method(10);}//ANSWER:

java - 为什么在使用带有原始类型和包装类的可变参数重载时会出现不明确的错误?

这个问题在这里已经有了答案:Ambiguousvarargsmethods(4个答案)关闭6年前。我不明白为什么在案例1中,它没有给出编译错误,相反在案例2(可变参数)中,它给出了编译错误。谁能详细说明编译器在这两种情况下有什么区别?我浏览了很多关于它的帖子,但还无法理解。案例#1publicclassTest{publicvoiddisplay(inta){System.out.println("1");}publicvoiddisplay(Integera){System.out.println("2");}publicstaticvoidmain(String[]args){ne

java - 关于java中重载和类型提升的理论探究

如果有add(int,long)和add(long,int)两种方法,则调用add(10,10)将被视为歧义。但是如果我们有这样的例子怎么办,为什么它仍然被认为是歧义?staticvoidadd(shortnum1,shortnum2){System.out.println("add(short,short)");}staticvoidadd(bytenum1,longnum2){System.out.println("add(byte,long)");}publicstaticvoidmain(String[]args){bytenum1=10;bytenum2=10;add(num

java - 在 Java 中接受不同类型的参数

这是一个我不确定如何用Java解决的问题。我想根据三种类型的数据(URI、String或Literal)制作三重语句,每种类型的编码都不同。我编写了接受这些类型的编码方法。publicstaticStringmakeStatement(URIsubject,URIpredicate,Stringobject){return""+encode(subject)+""+encode(predicate)+""+encode(object)+".\n";}publicstaticStringmakeStatement(Stringsubject,URIpredicate,Stringobje

java - java中的重载方法优先级

我知道这个问题讨论过很多次,但我还是不明白。研究这段代码:publicclassMain{publicstaticvoidvar(Integerx,inty){System.out.println("Integerint");}publicstaticvoidvar(int...x){System.out.println("int...x");}publicstaticvoidvar(Integer...x){System.out.println("Integer...");}publicstaticvoidmain(String...args){bytei=0;Integeri2=1

java - SCJP问题: Java method overloading with var-args.是什么道理?

为什么下面的程序会抛出异常?publicclassMainClass{publicstaticvoidmain(String[]argv){callMethod(2);}publicstaticvoidcallMethod(Integer...i){System.out.println("Wrapper");}publicstaticvoidcallMethod(int...i){System.out.println("Primitive");}方法callMethod(Integer[])对于MainClass类型不明确好的,我可以看到这两种方法中的任何一种都可以工作(如果另一种被注

java - 方法重载 : Single parameter vs alternating parameters

这个问题可能类似于Javaoverloadconfusion我正在阅读一本书,其中有一个关于方法重载的主题,编译器可能无法从中解析被调用的方法。书中的例子使用了带有两个参数(int,double)和(double,int)的重载方法。调用此方法如overloadedTwoParam(4,5)将导致编译器错误,因为int可以传递给double。我的问题是,如果我的参数只有一个,为什么编译器能够解析将调用哪个方法?publicclassTest{publicstaticvoidmain(String[]args){Testt=newTest();t.overloadedSinglePara