我的头发还在呢 2016-05-06 08:03 采纳率: 100%
浏览 2667
已采纳

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条回答

  • 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编程思想。
    
    
    如有帮助还请采纳
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况