-2
public class MainClass
{
private String name="";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args)
{
ArrayList<String> al=new ArrayList<String>();
String str=new String("abc");
al.add(str);
str="def";
al.add(str);
str="ghi";
al.add(str);
str="jkl";
al.add(str);
System.out.println(al);
ArrayList<MainClass> al1=new ArrayList<MainClass>();
MainClass mainclass=new MainClass();
mainclass.setName("Abhi");
al1.add(mainclass);
mainclass.setName("Sajith");
al1.add(mainclass);
mainclass.setName("Sridhar");
al1.add(mainclass);
for(MainClass main:al1)
System.out.println(main.getName());
}
}
[abc, def, ghi, jkl]
Sridhar
Sridhar
Sridhar
なぜそれが最初のケースで起こっていないときに、私のオブジェクトが第二の場合にオーバーライドを得ていますか?
新しいMainClass();オブジェクトを作成するのは1つだけなので、3つの異なる値を設定すると、この1つのオブジェクトが設定されることを期待する必要があります。デバッガのコードをステップ実行して、何が起こっているのかを正確に把握できるはずです。 –
'new String'を使うのか、文字列リテラルを使うのかにかかわらず、4つの異なる文字列があります。 –
ArrayList al = new ArrayList (); ArrayListと同じです。 al = new ArrayList <>();と悪い練習String String str = new String( "abc"); String str = "abc";を実行します。 –
Tokazio