import java.io.*;
public class TestArrayTrans
{
class ArrayTrans
{
ArrayTrans(int[] ary)
{
int j;
for(j= 0; j< ary.length; j++)
{
System.out.println(ary[j]);
}
}
}
public static void main(String[] args)
{
int[] array= new int[4];
int i;
for(i= 0; i< 4; i++)
{
array[i]= i;
}
ArrayTrans at= new ArrayTrans(array);
}
}
public class TestArrayTrans
{
class ArrayTrans
{
ArrayTrans(int[] ary)
{
int j;
for(j= 0; j< ary.length; j++)
{
System.out.println(ary[j]);
}
}
}
public static void main(String[] args)
{
int[] array= new int[4];
int i;
for(i= 0; i< 4; i++)
{
array[i]= i;
}
ArrayTrans at= new ArrayTrans(array);
}
}
ArrayTrans at= new ArrayTrans(array);
应该改为
TestArrayTrans.ArrayTrans at= tat.new ArrayTrans(array);
在静态方法中创建内部类对象需要外围类对象,只有在非静态方法中才可以直接创建内部类对象
2、我试了在成员内部类ArrayTrans前加public没问题,理论上内部类可以是任何访问权限的,没问题
Must qualify the allocation with an enclosing instance of type TestArrayTrans (e.g. x.new A() where x is an instance of TestArrayTrans).编译时候的错误内部类创建对象需要外部类的对象那么应该是
TestArrayTrans temp = new TestArrayTrans();
ArrayTrans at= temp.new ArrayTrans(array);
只有在非静态方法中才可以直接创建内部类对象
以下代码也可以static int[] array= new int[4];
public static void main(String[] args)
{
TestArrayTrans temp=new TestArrayTrans();
temp.ready();
}
void ready()
{
int i;
for(i= 0; i< 4; i++)
{
array[i]= i;
}
ArrayTrans at= new ArrayTrans(array);
}
但是我的理解是:其实也是需要了外部类的对象,只是this是隐含的罢了
也就是this.
ArrayTrans at= this.new ArrayTrans(array);不知道这样理解对不对
ArrayTrans at= this.new ArrayTrans(array);