我使用Java。
我已经有一个名为“Subject”的自定义对象的类。
我有另一个只包含Subject对象链接列表的类。 (称为subjectList)
我在subjectsList类中编写了一个方法(称为“getSubject()”),用于返回链接列表中特定索引处的Subject对象。为此,我使用了ListIterator。我将在LinkedList中的给定索引处创建一个ListIterator,并使用.next()方法。
但是,ListIterator中的.next()方法只返回一个java.lang.Object,即使我希望它返回一个Subject对象。
如何让ListIterator.next()返回Subject对象?
我已经尝试向主题转播,但这似乎失败了,我在某处读到你不能低估不相关的对象。
这是我的subjectList类:
import java.util.*;
public class subjectsList
{
//my LinkedList of Subject objects and a ListIterator
private LinkedList<Subject> l;
private ListIterator itr;
//constructor that simply creates a new empty LinkedList
public subjectsList()
{
l = new LinkedList();
}
//Method to return the Subject object at a specific index in the LinkedList
public Subject getSubject( byte index )
{
itr = l.listIterator( index );
return itr.next();
}
//Method to add a new Subject object to the LinkedList
public void addSubject( String nameInput, byte levelInput )
{
l.addLast( new Subject( nameInput, levelInput ) );
}
//Method to remove the Subject object at a specific index in the LinkedList
public void removeSubject( byte index )
{
itr = l.listIterator( index );
itr.next();
itr.remove();
}
}
有问题的方法是“getSubject()”方法。
答案 0 :(得分:5)
您需要将迭代器声明为:
private ListIterator<Subject> itr;
还在构造函数中创建如下的LinkedList对象:
l = new LinkedList<Subject>();
您还可以在返回时将其强制转换为主题,因为您的列表仅存储Subject对象。但如前所述定义Iterator会更好。
public Subject getSubject( byte index )
{
itr = l.listIterator( index );
return (Subject)itr.next();
}
除了您的问题,我在您的代码中看到了命名约定问题。最好是遵循它并做一个习惯。
注意:在Eclipse IDE中尝试您的示例后,我对我的答案进行了更改。我建议你使用IDE,因为它也会告诉你这些事情的警告。
答案 1 :(得分:5)
您可以在ListIterator
上使用通用性。
private ListIterator<Subject> itr;
现在itr.next()
返回主题。
资源:
PS:我建议您将LinkedList
的实例化更改为l = new LinkedList<Subject>();