在我的应用程序中是Java LinkedList队列数据结构中的exe类。
由于某种原因,enqueue无法处理学生类型。一切似乎都很好,除了我得到这个错误:
The method enqueue(String) in the type LinkedQueue<String> is not
applicable for the arguments (Student)
这是代码。我已经尝试重新安排事情,但我真的很茫然,我无法改变Queue类,因为它应该是通用的。
String result;
LinkedQueue<String> queue = new LinkedQueue<String>();
Student []studentGroup = {
new Student(new String("data")),
new Student(new String("data")),
new Student(new String("data")),
new Student(new String("data")),
new Student(new String("data"))};
for (int k = 0; k<studentGroup.length; k++ ) {
queue.enqueue(studentGroup[k]);
}
}
}
编辑:正在编辑它的伙伴,但谢谢。是的,它缺少一个主要的方法和类名,这是有意的,因为很多人用Google搜索这个代码进行分配。
所以,我怀疑将LinkedQueue设置为,因为我必须做一个dequeue和其他一些东西,并且不想实例化超过我必须。
但是,是的,我一直在为一些如此明显的事情而头脑发抖,但后来我已经醒了34个小时了。感谢你们指出这些人,非常感谢。
答案 0 :(得分:3)
您的LinkedQueue
具有通用类型String
,但应该有Student
(如果它应该只包含Student
个对象(及其规格)):
LinkedQueue<Student> queue = new LinkedQueue<Student>();
您可能会发现WikiPedia上的“Motivations for generics”很有趣。关于泛型的许多其他资源也是可用的。
另外,为什么new Student(new String("data")),
?如果字符串不需要是不同的实例,那么new Student("data"),
就足够了(并且更具可读性)。
答案 1 :(得分:1)
通过说LinkedQueue<String>
,您要求编译器检查列表中的所有元素是否为String类型。你可能意味着LinkedQueue<Student>
。
如果您希望它同时接受(BAD idea),您可以LinkedQueue<Object>
答案 2 :(得分:0)
您正在尝试将类型为Student的对象添加到字符串队列中。 你应该:
LinkedQueue<Student> queue = new LinkedQueue<Student>();