// returns the value of the current element (or -1)
public T GetValue()
{
Node<T> temp = head;
while(temp != curr)
{
temp = temp.next;
if(temp == null)
{
return -1;
}
}
return temp.data;
}
我的代码应该在当前元素处获取值并返回该值。如果找不到,则返回-1。在没有if语句的情况下运行此代码会给我Null指针异常。由于泛型,我无法使用if语句运行代码。
如果T
为Integer
,则只能返回-1;但是那不是通用的。
您需要某种特殊的值,不能将其误认为是T
的“真实”实例。例如,您可以将返回类型更改为Optional<T>
,因此可以返回Optional.empty()
表示未找到值。
public Optional<T> GetValue() {
// ...
if(temp == null)
{
return Optional.empty();
}
// ...
return Optional.of(temp.data);
}
或者,您可以为类的构造函数提供“未找到”的值,并在找不到内容时返回该值:
class YourClass<T> {
private final T notFoundValue; // Assign in constructor.
// ...
public T GetValue() {
// ...
if(temp == null)
{
return notFoundValue;
}
// ...
return temp.data;
}
}
但是您必须非常小心地处理返回notFoundValue
的可能性;通过将不同(但相关)类型的内容返回到T
(例如Optional<T>
)来使其明确,是确保进行此处理的好方法。