看看下面的三個程式啟動並執行效果,有點意思:
1)正確的程式
public class MyTest {
public static void main(String[] args)throws Exception
{
MyTest myTest=new MyTest();
List list=new ArrayList();
MyObject t;
for(int i=0;i<3;i++)
{
t=myTest.new MyObject();
t.setID(i);
list.add(t);
}
t=null;
for(int i=0;i<3;i++)
{
System.out.println(((MyObject)(list.get(i))).getID());
}
}
class MyObject
{
long iD;
/**
* @return 返回 iD。
*/
public long getID() {
return iD;
}
/**
* @param id 要設定的 iD。
*/
public void setID(long id) {
iD = id;
}
}
}
2)錯誤的程式
public class MyTest {
public static void main(String[] args)throws Exception
{
MyTest myTest=new MyTest();
List list=new ArrayList();
MyObject t=myTest.new MyObject();
for(int i=0;i<3;i++)
{
t.setID(i);
list.add(t);
}
t=null;
for(int i=0;i<3;i++)
{
System.out.println(((MyObject)(list.get(i))).getID());
}
}
class MyObject
{
long iD;
/**
* @return 返回 iD。
*/
public long getID() {
return iD;
}
/**
* @param id 要設定的 iD。
*/
public void setID(long id) {
iD = id;
}
}
}
3)正確但不太好的程式
public class MyTest {
public static void main(String[] args)throws Exception
{
MyTest myTest=new MyTest();
List list=new ArrayList();
for(int i=0;i<3;i++)
{
MyObject t=myTest.new MyObject();
t.setID(i);
list.add(t);
t=null;
}
for(int i=0;i<3;i++)
{
System.out.println(((MyObject)(list.get(i))).getID());
}
}
class MyObject
{
long iD;
/**
* @return 返回 iD。
*/
public long getID() {
return iD;
}
/**
* @param id 要設定的 iD。
*/
public void setID(long id) {
iD = id;
}
}
}