看看下面的三个程序运行的效果,有点意思:
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;
}
}
}