qq_29484347
我的头发还在呢
采纳率100%
2016-05-06 08:03 阅读 2.5k
已采纳

JAVA必须使用类型的外层实例来分配限定?

package test;

public class Simple {
public static void main(String[] args)
{
int[]arry={3,56,46,33,112,32,48,45,21,88,64,32,7,88,64};
arrysort as= new arrysort();
arry=as.sort(arry);
for(int i=0;i<arry.length;i++)
{
System.out.println(arry[i]);
}
}
class arrysort
{
public int[] sort(int[]arry)

{
int size=arry.length-1;
boolean swaps;
do{
swaps=false;
for(int i=0;i {if(arry[i]>arry[i+1])
{int temp=arry[i];
arry[i]=arry[i+1];
arry[i+1]=temp;
}
}
size--;
}while(swaps);
int[]sortresult=new int[size];
sortresult=arry;
return sortresult;
}
}

}

arrysort as= new arrysort()就是在main中创建一个对象时报错:没有任何Simple类型的外层实例可用访问,必须使用类型simple的外层实例来限定分配。
为什么创建arrysort类的对象是出错了啊?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    fk002008 lambda-fk 2016-05-06 08:37

    你可以把内部类看成一个整体,那么就如同你定义了Simple的一个成员一样。

    请问static 修饰的main函数中能直接访问一个类的成员吗?
    要访问该怎么弄呢?

    必须提供一套这个getter和setter方法吧

    所以你看成整体的内部类arrysort需要一个getter哦
    比如
    在Simple中定义

       public Arrysort getArrysort(){
     return new Arrysort();
       }
            ```
    以上都是一个解决的方法
    
    其实呢内部类本身可以看成是一个宿主类的成员的。整体法看他。
    
    既然是内部类那么信息只共宿主类Simple使用。如果能在main函数中使用它那么也能在别处使用,内部还有什么意义呢。
    内部使用,所以应该在Simple类中做一个排序的方法,只不过这个方法的实现由这个内部类完成哦
    这样外部调用这个方法就可以了吗
    何必非要在main函数中调用内部类呢
    
    其次,你可以把这个内部类定义成static的
    static class arrysort
    
    这样他就是一个工具了,可以直接在main函数中使用的
    
    至于这个内部类和宿主类之间变量共享访问的问题你可以看看Java编程思想。
    
    
    如有帮助还请采纳
    
    点赞 2 评论 复制链接分享
  • sxwws sxwws 2016-05-06 08:20

    因为你定义的arrysort类是Simple类的内引类。如果编译后,你会通过class的名字就可以发现这2个类之间是有关系的。

    点赞 评论 复制链接分享

相关推荐