面接試験を受けたところ、次のコードが表示されました。
編集:
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
パラメータ化された引数を持つクラスの静的メソッドを呼び出す方法です。
EDIT:@ snipes83によると、パラメータ化された引数を持つクラスの非静的メソッドを呼び出す構文。
SomeObject.<Type>method