这个程序中CountInt类的中的b是final类型的为什么可以赋值一个可变的数。
import java.util.ArrayList;
import java.util.List;
public class FinalTest
{
public static void main(String[] args)
{
FilledList<CoutInt> foo = new FilledList<CoutInt>(CoutInt.class);
System.out.println(foo.create(14));
}
}
class CoutInt
{
private static int a;
private final int b = a++;
@Override
public String toString()
{
return Integer.toString(b);
}
}
class FilledList<T>
{
private Class<T> classtype;
public FilledList(Class<T> type)
{
this.classtype = type;
}
public List<T> create(int Elements)
{
List<T> result = new ArrayList<T>();
try{
for(int i=0;i<Elements;i++)
{
result.add(classtype.newInstance());
}
}catch(Exception ex)
{
throw new RuntimeException();
}
return result;
}
}
import java.util.ArrayList;
import java.util.List;
public class FinalTest
{
public static void main(String[] args)
{
FilledList<CoutInt> foo = new FilledList<CoutInt>(CoutInt.class);
System.out.println(foo.create(14));
}
}
class CoutInt
{
private static int a;
private final int b = a++;
@Override
public String toString()
{
return Integer.toString(b);
}
}
class FilledList<T>
{
private Class<T> classtype;
public FilledList(Class<T> type)
{
this.classtype = type;
}
public List<T> create(int Elements)
{
List<T> result = new ArrayList<T>();
try{
for(int i=0;i<Elements;i++)
{
result.add(classtype.newInstance());
}
}catch(Exception ex)
{
throw new RuntimeException();
}
return result;
}
}
因为a还没有被赋值呀
你每次new 不同的CoutInt ,不同的CoutInt的对象的b是不一样的
但是CoutInt的对象的b的值赋值后就没有再改变了