Значение Java Generics. <SomeValue>
Я прошел собеседование и увидел следующий код:
РЕДАКТИРОВАТЬ:
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());
}
}
Я никогда не видел Java как
Value.<SomeValue>
Тест заключается в реализации класса Value с указанным выше кодом модульного теста.
Я попытался выяснить сигнатуру метода Value ниже (нужна реализация):
public interface Value<T> {
public boolean hasValue();
public Value<T> createEmptyValue();
}
Кто-нибудь знает, пожалуйста, помогите?
Спасибо
РЕДАКТИРОВАТЬ: должно быть так в соответствии с ответами ниже @marlon
public class Value<T> {
public boolean hasValue(){}
public static <M> Value<M> createEmptyValue(){}; //need <M>
}
Синтаксис ключа, который нужно знать:
Value.<SomeValue> //ClassName.<Type>method
способ вызвать статический метод класса с параметризованным аргументом
РЕДАКТИРОВАТЬ: в соответствии с @ snipes83, синтаксис для вызова нестатического метода класса с параметризованным аргументом.
SomeObject.<Type>method