Ich bekomme einen "Verweis zu machen ist mehrdeutig" Compiler-Fehler, den ich nicht verstehe.Wo ist die Mehrdeutigkeit in dieser Java-Methode Aufruf?
Ich habe diese beiden Methoden
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
Diese Codezeile als nicht eindeutig gekennzeichnet wird
String className = "clsNme";
String one = "1";
String two = "2";
SimpleFactory.make(className, Object.class, false, one, two);
Hier ist der Fehler
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...)
nicht das Vorhandensein der Does Boolescher Parameter macht die erste Methode näher als die zweite?
Wenn es darauf ankommt, ist dies Teil eines PowerMock Test Dies ist die komplette Methode
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
}
Wenn es hilft: Ich bin mit javac 1.8.0_77, Mokito 1.10.19, und Powermock 1.6.3.
Basierend auf den Lösungen unten, sprach ich die Compiler-Fehler, die durch die 'boolean' Parameter' Boolean' ändern. Dies bedeutet, dass Benutzer 'Boolean.TRUE' anstelle von' true' übergeben müssen; aber das scheint weniger anstößig zu sein, als dass sie 'new Object [] {a, b, c} eingeben' – Zack