Wartość Java Generics. <SomeValue>

Miałem test wywiadu i zobaczyłem następujący kod:

EDYTOWAĆ:

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());
    }
}

Nigdy nie widziałem Java generic

Value.<SomeValue>

Test polega na wdrożeniu klasy Value z podanym powyżej kodem testu jednostki.

Próbowałem znaleźć podpis metody wartości poniżej (wymaga implementacji):

public interface Value<T> {

    public boolean hasValue();
    public Value<T> createEmptyValue();
}

Ktoś wie, proszę o pomoc?

Dziękuję Ci

EDYCJA: Powinny być takie jak poniżej, zgodnie z odpowiedziami @marlon

public class Value<T> {

    public boolean hasValue(){}
    public static <M> Value<M> createEmptyValue(){}; //need <M>
}

Składnia klucza, aby wiedzieć:

Value.<SomeValue>  //ClassName.<Type>method

jest sposobem wywołania metody statycznej klasy z parametryzowanym argumentem.

EDYCJA: zgodnie z @ snipes83, składnia do wywołania niestatycznej metody klasy z parametryzowanym argumentem.

SomeObject.<Type>method

questionAnswers(4)

yourAnswerToTheQuestion