我的头发还在呢 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条)

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置