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);
}
}

解决方案 »

  1.   

    1、首先你这行有问题
    ArrayTrans at= new ArrayTrans(array);
    应该改为
    TestArrayTrans.ArrayTrans at= tat.new ArrayTrans(array);
    在静态方法中创建内部类对象需要外围类对象,只有在非静态方法中才可以直接创建内部类对象
    2、我试了在成员内部类ArrayTrans前加public没问题,理论上内部类可以是任何访问权限的,没问题
      

  2.   

    No enclosing instance of type TestArrayTrans is accessible. 
    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);
      

  3.   

    根据mengx(迪迦奥特曼)的
    只有在非静态方法中才可以直接创建内部类对象
    以下代码也可以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);不知道这样理解对不对
      

  4.   

    上面写错了,应该是
    ArrayTrans at= this.new ArrayTrans(array);
      

  5.   

    内部类好像很复杂的样子?谁能把inner class说得详细点...
      

  6.   

    这个地方在java编程思想上解释的比较到位 建议察看一下 同时mengx(迪迦奥特曼) 解释的是对的