我是Java的初学者,我试图通过创建简单的程序来学习List的概念。基本上,我有两个java文件:CallListClass.java和TestList.java。
CallListClass.java
package javaSrc;
import java.util.*;
public class CallListClass {
public static void main(String[] args){
List<TestList> tl = new ArrayList<TestList>();
//TestList tlobj = new TestList();
TestList l1 = new TestList();
l1.setname("MARY");
System.out.println("Value of name::"+l1.getname());
tl.add(l1.getname()); //Error on this line-The method add(TestList) in the type List<TestList> is not applicable for the arguments (String)
}
}
TestList.java
package javaSrc;
public class TestList{
int age;
String name ="";
int empid;
int getage()
{
return this.age;
}
String getname()
{
return this.name;
}
int getempid()
{
return this.empid;
}
void setage(int age)
{
this.age = age;
}
void setname(String name)
{
this.name = name;
}
void setempid(int empid)
{
this.empid = empid;
}
}
有谁可以告诉我为什么List
add
方法会出现上述编译错误?如果我的TestList.java在真实场景中是可行的,还请告诉我吗?
答案 0 :(得分:0)
方法l1.add()
具有签名List<TestList>.add(TestList value)
,因此添加的值应为TestList
类型。但是,l1.getName()
的结果是String
,因此无法添加到列表中。例如:
List<MyObject> list = new ArrayList<>();
MyObject obj = new MyObject();
//Not correct
list.add(obj.getClass());
list.add(obj.toString());
//Correct
list.add(obj);
用tl.add(l1.getname());
替换tl.add(l1);
可以解决您的问题。
答案 1 :(得分:0)
我正在考虑创建一个名称,年龄和empid的列表。有没有办法实现这个目标?
将错误行更改为
tl.add(l1);
就是这么简单。
你所做的一切都是正确的,直到上面一行。您创建了一个类TestList
,它基本上是一组名称,年龄和empid。您创建了一个可以存储TestList
:new ArrayList<TestList>()
的列表。你唯一没做的就是把东西放进清单。您不需要将每个名称,年龄和empid放入列表中,只需将整个l1
对象放在那里,因为这是ArrayList
应该存储的内容!
此外,还有一些其他小问题。您应该为您的班级命名一个比TestList
更有意义的名称。您还应将getname
重命名为getName
,将getage
重命名为getAge
等。