我有一个非常令人沮丧的问题:
我正在尝试运行一个迭代器,但它继续在hasNext类中提出java.lang.NullPointerException。
我不太确定尝试使用空值的位置。我假设它与当前有关。我添加了一个if语句来检查current是否为null。但随后它又回归并带来意想不到的价值。
帮助表示赞赏。
以下代码:
private class Iterator implements Iterator
{
private Link<T> current;
public boolean hasNext () {
if(current.next == null)
return false;
return true;
}
public T next() throws OutOfBounds
{
if (this.hasNext())
{
T element = current.element;
current = current.next;
return element;
}
else
throw new OutOfBounds("No next element to call");
}
}
private class Link<T>
{
private T element;
private int priority;
private Link<T> next;
public Link(T t, int p, Link<T> n)
{
this.element = t;
this.priority = p;
this.next = n;
}
}
}
答案 0 :(得分:5)
您可能没有初始化current
,因此在检查hasNext
currnet
与current.next
进行比较>
修改支票
if(current.next == null)
为:
if(current == null || current.next == null)
或者将您的方法修改为:
public boolean hasNext () {
return (current != null && current.next != null);
}
答案 1 :(得分:1)
尝试更新您的hasNext,如下所示:
public boolean hasNext () {
if(current == null) {
System.out.println("current is null");
return false;
} else if(current.next == null)
return false;
}
return true;
}
答案 2 :(得分:1)
您可以在while块内两次使用iterator.next()。 通过iterator.next()创建新对象,然后使用它。
这是使用它的正确方法
function get_current_time($user_login, $user) {
$time = time();
update_user_meta( $user->ID, '_last_login', $time );
$current_login = get_user_meta( $user->ID, '_last_login', true );
$the_currentlogin_date = date('M j, Y h:i a', $current_login);
return $the_currentlogin_date;
}
add_action('wp_login', 'get_current_time', 10, 2);