问题描述
- 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类的对象是出错了啊?
解决方案
你可以把内部类看成一个整体,那么就如同你定义了Simple的一个成员一样。
请问static 修饰的main函数中能直接访问一个类的成员吗?
要访问该怎么弄呢?
必须提供一套这个getter和setter方法吧
所以你看成整体的内部类arrysort需要一个getter哦
比如
在Simple中定义
public Arrysort getArrysort(){
return new Arrysort();
}
```
以上都是一个解决的方法
其实呢内部类本身可以看成是一个宿主类的成员的。整体法看他。
既然是内部类那么信息只共宿主类Simple使用。如果能在main函数中使用它那么也能在别处使用,内部还有什么意义呢。
内部使用,所以应该在Simple类中做一个排序的方法,只不过这个方法的实现由这个内部类完成哦
这样外部调用这个方法就可以了吗
何必非要在main函数中调用内部类呢
其次,你可以把这个内部类定义成static的
static class arrysort
这样他就是一个工具了,可以直接在main函数中使用的
至于这个内部类和宿主类之间变量共享访问的问题你可以看看Java编程思想。
如有帮助还请采纳
解决方案二:
因为你定义的arrysort类是Simple类的内引类。如果编译后,你会通过class的名字就可以发现这2个类之间是有关系的。