草庐IT

Java:外部类和内部类方法之间的名称歧义

假设我有:publicclassOuterClass(){publicclassInnerClass{publicvoidsomeMethod(intx){someMethod(x);}}publicvoidsomeMethod(intx){System.out.println(x);}}如何解决外部类的someMethod()和内部类的someMethod()之间的歧义? 最佳答案 可以通过OuterClass.this引用外部,或者通过OuterClass.this.method()调用方法。但是,从设计的角度来看,共享名称至少

java - 可变参数函数歧义

publicstaticvoidmain(String[]args){System.out.println(fun(2,3,4));}staticintfun(inta,intb,intc){return1;}staticintfun(int...a){return0;}输出:1问题:在上面的例子中,为什么fun函数选择了第一个函数而不是第二个函数。选择的依据是什么,因为无法确定用户实际想要调用哪个fun? 最佳答案 基本上有一个特定调用的偏好。撇开其他不谈,这意味着可以针对少量参数进行优化,避免在执行时毫无意义地创建数组。JLS并

表达的类型是歧义的,没有更多上下文

我试图做dateAndResultsDictionary还有一系列空的字典,但我会遇到此错误。我究竟做错了什么?看答案该语句在句法上不正确。字典不能容纳多种类型的键或值,因此类型的声明这样:[String:[Int],String:String]是非法的。NB[Int]和Array在语义上是相同的。如果您想拥有多种东西,最好的方法可能是使用枚举:enumDictionaryContent{casestring(String)caseintArray([Int])}vardateAndResultDictionary=[[String:DictionaryContent]]()

c# - 为什么在 Java 和 C# 中处理方法歧义存在这种差异?

这个问题在这里已经有了答案:WhydoesJavaandC#differinoops?(2个答案)关闭9年前。我有两个类A和B,其中B派生自A。这两个类都有一个具有相同签名的方法。它们在Java和c#中的调用方式如下-->如果是JAVA:classA{publicvoidprint(){System.out.println("InsideParent");}}classBextendsA{publicvoidprint(){System.out.println("InsideChild");}}classtest4{publicstaticvoidmain(Stringargs[]){

java - 递归输出歧义

好吧,我只是在学习递归,我对某一点感到困惑。这是代码publicclassRecursiveDemo{publicstaticvoidshowRecursion(intnum){System.out.println("Enteringmethod.num="+num);if(num>1){showRecursion(num-1);}System.out.println("Leavingmethod.num="+num);}publicstaticvoidmain(String[]args){showRecursion(2);}}我得到的输出是:Enteringmethod.num=2E

Java方法重载——歧义

虽然我正在运行以测试此thread中的一些代码我发现了一件奇怪的事情,如果你考虑下面的程序importjava.util.ArrayList;importjava.util.List;publicclassOverloadTest{publicStringtest1(Listl){return"abc";}publicinttest1(Listl){return1;}publicstaticvoidmain(String[]args){Listl=newArrayList();System.out.println(newOverloadTest().test1(l));}}由于字节码删

Java:你怎么称呼这种多重继承歧义?

这是一个在Java中使用多接口(interface)继承的示例,但存在一个问题。请注意,我完全知道为什么会出现问题,这不是我要问的重点。问题在于如何命名这种特定的多接口(interface)继承歧义(如果有名称的话)。例如,在C++中,当你使用多重实现继承而无法确定使用哪个重写方法时产生的歧义被称为“菱形继承(钻石问题)”:http://en.wikipedia.org/wiki/Diamond_problem现在再一次,我知道这不是同一个问题:这不是重点。关键是在之前的案例中已经创造了一个名称。我想知道是否存在我将要描述的问题的名称。这是另一种多重继承的示例,其中一个接口(inter

java - 消除接受不同功能接口(interface)的重载方法的歧义

这个问题在这里已经有了答案:MethodReference-passingFunctiontomethodwithConsumerargument(2个答案)关闭4年前。我在Utils中有以下可用方法类:protectedUwithTx(Functionfc){//dosomethingwiththefunction}protectedvoidwithTx(Consumerconsumer){withTx(g->{consumer.accept(g);returnnull;});}并且在myClass的方法中我有:withTx(g->anotherMethod(g));第二段代码编译错

java - 我可以强制消除 Rhino 调用的重载方法的歧义吗?

进行以下测试:publicstaticclassScripted{publicvoidsetThing(Listlist){System.out.println("Setvialist");}publicvoidsetThing(Object[]array){System.out.println("Setarray");}}@TestpublicvoidtestScripting()throwsException{ScriptEngineengine=newScriptEngineManager().getEngineByExtension("js");engine.getContex

c++ - 显式转换运算符模板的优先级和歧义

我一直在我的项目中使用模板化的显式转换运算符,以实现从自定义类变体类型的显式转换。重现我的问题的最小示例如下所示(在C++14模式下):#include#include#includeusingnamespacestd;classA{public:templateexplicitoperatorT()const//1{coutexplicitoperatorconstT&()const//2{coutexplicitoperatorT&()//3{cout(a)-3.14)我遇到的问题是为static_cast转换选择的运算符。对于GCC,这是一种预期的(1)情况。输出是:operat