1、  创建一个类名为 Outer 的类, 在 Outer 类中包含一个 内部类 Inner。   2、  在主方法中,实例化 Inner 类。   3、  为什么通过的方式是: Outer类的实例 .new Inner()  ,new不是关键字的吗? new 为什么可以前面加点这样用? 代码如下:// 包含有 内部类 的Outer 类 
   class Outer
{
class Inner 
{
int index = 70; void print()
{
System.out.println(index);
}
}
}// 主方法所在的类
class Test
{
public static void main(String[] args)
{
Outer _outer = new Outer();
Outer.Inner in = _outer.new Inner();
in.print();
}
}

解决方案 »

  1.   

    因为Inner是Outer 内部的资源,且不是静态的,Inner对Test不可见,所以不能在Test中直接new Inner();只能先实例化Outer ,再通过实例化的Outer 实例化Inner。
      

  2.   

    因为你的 Inner 不是 static 的
    可以把内部类想象成一个属性,那么要访问非static属性,就需要外部类实例,所以必须先new外部类,在通过外部类实例new内部类
    LZ可以试着在把 class Inner  改成 static class Inner 
    然后 在main中 直接 Outer.Inner in = new Outer.Inner();
    好好理解一下两种的区别
      

  3.   

    class Outer
    {
    class Inner
    {
    int index = 70; void print()
    {
    System.out.println(index);
    }
    }
    }
    class Inner
    {

    }
    这样写也是能够编译通过,语法上做个区分
      

  4.   


    请问: 是不是 所有的 类中 都可以使用 .new 的方式 new 里面的东西?
      

  5.   


       因为我 java 功力不深厚啊 先请见谅    因为以往看见 new 的时候 , 都是 = new XXX() , 但是这里用的是 类名.new 所以我很想知道, new 是关键字, 为什么可以 用 类名 来 点new来用
      

  6.   

    非private的非静态内部类,都是这样的,也就是所谓的语法了。
      

  7.   


    那就是说  .new 这样的形式,是内部类这种情况下,纯语法上的使用形式, 请问是这样的吗?