这个Java方法调用的歧义在哪里?
发布时间:2020-05-28 22:45:13 所属栏目:Java 来源:互联网
导读:我得到一个“引用make is ambiguous”编译错误,我不明白. 我有这两种方法 public static T T make(String name, ClassT parentClass, boolean rethrowRuntimeExceptions, Object...
|
我得到一个“引用make is ambiguous”编译错误,我不明白. 我有这两种方法 public static <T> T make(String name,Class<T> parentClass,boolean rethrowRuntimeExceptions,Object... params) throws DLException public static <T> T make(String name,Object... params) throws DLException 这行代码被标记为含糊不清 String className = "clsNme"; String one = "1"; String two = "2"; SimpleFactory.make(className,Object.class,false,one,two); 这是错误 both method <T#1>make(String,Class<T#1>,boolean,Object...) in SimpleFactory and method <T#2>make(String,Class<T#2>,Object...) in SimpleFactory match
[javac] where T#1,T#2 are type-variables:
[javac] T#1 extends Object declared in method <T#1>make(String,Object...)
[javac] T#2 extends Object declared in method <T#2>make(String,Object...)
布尔参数的存在是否使第一个方法比第二个方法更接近? 如果重要,这是PowerMock测试的一部分.这是完整的方法 public void makeCallsMakeWithFalse() throws Throwable {
Object expected = mock(Object.class);
String className = "clsNme";
String one = "1";
String two = "2";
spy(SimpleFactory.class);
doReturn(expected).when(SimpleFactory.class);
SimpleFactory.make(className,two); // causes error
Object observed = SimpleFactory.make(className,two); // doesn't cause error
assertEquals(expected,observed);
verifyStatic();
SimpleFactory.make(className,two); // causes error
} 如果有帮助:我使用的是javac 1.8.0_77,Mokito 1.10.19和Powermock 1.6.3. 解决方法问题在于Object... params 当调用SimpleFactory.make(className,two)时; make(String name,Object... params) 或者是否打电话 make(String name,Object... params) 因为该签名也可以在params varargs之前接受布尔值. 因此,为什么它不明确,两种方法签名都适用. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
