Java Generics Value. <SomeValue>
Ich hatte einen Interviewtest und sah den folgenden Code:
BEARBEITEN:
public class TestValue {
private Value<SomeValue> defaultValue;
@Test
public void Empty_Value_Has_No_Value() {
Assert.assertFalse(Value.<SomeValue> createEmptyValue()
.hasValue());
}
@Test
public void Default_Value_IsEmpty() {
Assert.assertEquals(Value.<SomeValue> createEmptyValue(),
defaultValue);
}
@Test
public void Non_Empty_Value_Has_Value() {
Assert.assertTrue(new Value<SomeValue>(true, new SomeValue())
.hasValue());
}
}
Ich hatte Java noch nie generisch gesehen
Value.<SomeValue>
Der Test besteht darin, die Wertklasse mit dem oben angegebenen Einheitentestcode zu implementieren.
Ich habe versucht, die Value-Methodensignatur unten herauszufinden (Implementierung erforderlich):
public interface Value<T> {
public boolean hasValue();
public Value<T> createEmptyValue();
}
Weiß jemand, bitte helfen Sie?
Vielen Dank
EDIT: Sollte laut Antworten unter @marlon so sein
public class Value<T> {
public boolean hasValue(){}
public static <M> Value<M> createEmptyValue(){}; //need <M>
}
Die Schlüsselsyntax zu wissen:
Value.<SomeValue> //ClassName.<Type>method
Auf diese Weise können Sie die statische Methode einer Klasse mit einem parametrisierten Argument aufrufen.
EDIT: laut @ snipes83 Syntax zum Aufrufen einer nicht statischen Methode einer Klasse mit parametrisiertem Argument.
SomeObject.<Type>method