站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题关于inner类的问题

关于inner类的问题

摘要: 关于inner类的问题


代码如下
public class Test
{
class A
{}
public static void main(String[] argv)
{Test test = new Test();}
}


public class Test
{
class A
{}
public static void main(String[] argv)
{ A a = new A();}
}

为什么上面的代码能编译通过,而下面的代码不可以,谁能告诉我,谢谢大侠们!


public class Test
{
class A
{}
public static void main(String[] argv)
{
Test t=new Test();
A a = t.new A();}
}


要改成这样。


agree


public class Test {
static class A {
}

public static void main(String[] argv) {
//Test t = new Test();
//A a = t.new A();
A b = new A();
}
}
也可以改成这个样子,这个其实和内隐类没有太多关系。主要是main方法是静态的,而你构造对象a时用到的构造方法也应该为静态的否则不能访问。所以有两种解决方法,imA(男的不会,会的不男)的一种,我的算一种。呵呵


public class Test
{
class A
{}
public static void main(String[] argv)
{
Test test = new Test();
Test.A a = test.new A(); //从外部类实力化内部类

   Test.A aa= new Test.new A();//连续写
}
}
 如果内部类没有与外部类直接关联,则无法存在!!!


楼上的还真又意思,加了个static ,


如果内部类没有与外部类直接关联,则无法存在!!!



twenty_three(花非花)
------------
您把内部类变为顶级嵌套类了:
和常规类没有区别了!
public class Test {
static class A {
}

public static void main(String[] argv) {
       Test.A a = new Test.A();//注意和非静态的内部类少了一个new关键字呵呵
}
}



mark


up



学习!


static 方法里面只能新建 static 的 inner class.


对于内部类,声明的时候,可以不用管它,但是如果需要实例化,就是要new 了,就要保证包含它的类是存在的,也就是说
class A {
class B {

}
public static void main(String[] args) {
A a = new A();
B b = a.new B();
}
}


http://www.ourexam.com/Article/sun/xsrm/jcrm/200509/29403.html

去看一下为什么创建 非静态内部类对象时,一定要先创建相应的外部类对象


楼主可以揭帖了

-------揭帖是一种美德


非常感谢大侠们这么热情,这两天太忙了没上来。现在就来揭帖。



?????


?????


↑返回目录
前一篇: 将类似MM/DD/YYYY(如 1/22/2006)这样的日期转化成三个单独的字符串
后一篇: 一个关于j2se中canvas的问题,在线等,急!