public class test{
class asd{
asd(){};
//show();
}
public static void main(String[] arg)
{
asd asdd;//报错语句。
//...
}
}
你的程序是有错误但没有发现你说的错误阿,现在这样可以了
class asd{
asd(){};
//show();
}
public static void main(String[] arg)
{
asd asdd;//报错语句。
//...
}
}
你的程序是有错误但没有发现你说的错误阿,现在这样可以了
如果一个对象还没有被实例化,类的静态方法就不能去访问
非静态成员。
你在main里可以用String是因为String不属于你的test类,
而asd是你的类test的内部类(inner class),没有被实例化的情况下,
静态方法只能访问自己的静态类和静态变量。
public static void main(String[] arg)
{Asd asdd;}
没问题,但如果是
public static void main(String[] arg)
{Asd asdd = new Asd();}
就有问题了。
因为Asd是非静态的,没有Test的实例对象,
就不能存在Asd的实例对象,如果你不想让
Asd静态,又想在Test历史礼化它,可以这样
把Asd的实例化放到Test的非静态方法里,
用一个实例化了的对象去构造Asd,比如构造函数。public class Test{
Test(){
Asd a = new Asd();
}
class Asd{
Asd(){};
}
public static void main(String[] arg)
{
new Test();
}
}
否则,你就只能把它声明成static的
〉没有Test的实例对象,就不能存在Asd的实例对象
表达能力太差,词不达意,别管这句话了
{Asd asdd;}
这样也是不行的,(至少它会反应你个没有初始化的错误)
事实上,在main()里面仅仅允许一个类申明变量,就是test,别的,无论你在什么地方声明的,好象都不行。为什么呢?我不知道。
JDK1.3.1+Windows2000(EN)