作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
面试面试看到如下代码:
编辑:
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
最佳答案
Value.<SomeValue>
这是泛型表示方法的方式。
使用 Google Guava 的 Optional
举个例子:
Optional<String> email = Optional.<String>of(strEmail);
参见 Generic Types - Invoking generic methods
由于接口(interface)不能声明静态方法(对你的 java 感到羞耻),只需将你的方法声明为静态而忘记接口(interface),就像这样:
class Value<T> {
public static <T> Value<T> createEmptyValue(){
return null;
}
}
关于Java 泛型值。<SomeValue>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16930109/
我是一名优秀的程序员,十分优秀!