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

Respuestas a la pregunta(4)

Su respuesta a la pregunta