Ricevo un errore del compilatore "fare riferimento a rendere ambiguo" che non capisco.Dov'è l'ambiguità in questa chiamata al metodo Java?
ho questi due metodi
public static <T> T make(String name, Class<T> parentClass,
boolean rethrowRuntimeExceptions,
Object... params) throws DLException
public static <T> T make(String name, Class<T> parentClass,
Object... params) throws DLException
Questa riga di codice viene contrassegnato come ambigua
String className = "clsNme";
String one = "1";
String two = "2";
SimpleFactory.make(className, Object.class, false, one, two);
Ecco l'errore
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,Class<T#1>,boolean,Object...)
[javac] T#2 extends Object declared in method <T#2>make(String,Class<T#2>,Object...)
Non ritiene la presenza del il parametro booleano rende il primo metodo più simile al secondo?
Se è importante, questo è parte di un test PowerMock Ecco il metodo completo
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, Object.class, false, one, two); // causes error
Object observed = SimpleFactory.make(className, Object.class, one, two); // doesn't cause error
assertEquals(expected, observed);
verifyStatic();
SimpleFactory.make(className, Object.class, false, one, two); // causes error
}
Se aiuta: sto usando javac 1.8.0_77, Mokito 1.10.19, e Powermock 1.6.3.
Sulla base delle soluzioni di seguito, ho rivolto gli errori del compilatore modificando il parametro 'boolean' a' boolean'. Ciò significa che gli utenti devono passare 'Boolean.TRUE' invece di' true'; ma, sembra meno fastidioso che aver loro digitare 'new Object [] {a, b, c}' – Zack