Valor genérico de Java. <SomeValue>
Tuve una prueba de entrevista y vi el siguiente código:
EDITAR:
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());
}
}
Nunca había visto Java genérico como
Value.<SomeValue>
La prueba es implementar la clase de valor con el código de prueba de la unidad anterior.
Intenté averiguar la firma del método de valor a continuación (necesito implementación):
public interface Value<T> {
public boolean hasValue();
public Value<T> createEmptyValue();
}
Alguien sabe, por favor ayuda?
Gracias
EDITAR: Debería ser así de acuerdo con las respuestas a continuación @marlon
public class Value<T> {
public boolean hasValue(){}
public static <M> Value<M> createEmptyValue(){}; //need <M>
}
La sintaxis clave a saber:
Value.<SomeValue> //ClassName.<Type>method
Es una forma de invocar el método estático de una clase con argumento parametrizado.
EDIT: según @ snipes83, la sintaxis para invocar el método no estático de una clase con un argumento parametrizado.
SomeObject.<Type>method