interface Selector{
boolean end();
Object current();
void next();
}public class TestParcel8{
private Object[] o;
private int next = 0;
public TestParcel8(int size){
o = new Object[size];
}
public void add(Object x){
if(next < o.length){
o[next] = x;
next++;
}
}
private class SSelector implements Selector{
int i = 0;
public boolean end(){
return i == o.length;
}
public Object current(){
return o[i];
}
public void next(){
if(i < o.length)i++;
}
}
public Selector getSelector(){
return new SSelector();
}
public static void main(String args[]){
TestParcel8 t = new TestParcel8(10);
for(int i=0;i<10;i++){
t.add(Integer.toString(i));
}
Selector s = t.getSelector();
while(!s.end()){
System.out.println((String)s.current());
s.next();
}
}
}javac一下,产生4个class文件,分别是:
Selector.class
TestParcel8$1.class //请问这个文件怎么产生的?
TestParcel8$SSelector.class //这个应该是内部类SSelector编译时产生的class文件
TestParcel8.class
public Selector getSelector(){
return new SSelector();
}测试了一下,是这句导致了TestParcel8$1.class产生,去掉以后就没有TestParcel8$1.class了。
具体情况还不清楚,等待高人来解答
反编译出来TestParcel8$1.class是空的;
Selector.class
TestParcel8$SSelector.class
TestParcel8.class没有 TestParcel8$1.class 。我使用的jdk是1.6的。我怀疑这个TestParcel8$1.class并不是这个java文件产生的,请楼主删掉这些.class文件,重新编译看下。
Selector.class
TestParcel8$SSelector.class
TestParcel8.class没有 TestParcel8$1.class 。我使用的jdk是1.6的。我怀疑这个TestParcel8$1.class并不是这个java文件产生的,请楼主删掉这些.class文件,重新编译看下。