A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 朱烈葵 中级黑马   /  2012-8-5 10:55  /  2701 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class StaticClass
{
public static void main(String[] args)
{
  String name = new StaticClass().new InnerTest("aaa").getName();
  System.out.println(name);
  class InnerTest
  {
   private String name;
   InnerTest(String name)
   {
    this.name=name;
   }
   public String getName()
   {
    return name;
   }
  }
}
}
怎么才能访问内部类的那个方法呢?

QQ截图20120805105412.jpg (12.71 KB, 下载次数: 39)

QQ截图20120805105412.jpg

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1 继续加油!

查看全部评分

13 个回复

倒序浏览
  1. public class StaticClass {
  2.         public static void main(String[] args) {
  3.                 class InnerTest {
  4.                         private String name;

  5.                         InnerTest(String name) {
  6.                                 this.name = name;
  7.                         }

  8.                         public String getName() {
  9.                                 return name;
  10.                         }
  11.                 }
  12.                 String name = new InnerTest("aaa").getName();
  13.                 System.out.println(name);
  14.         }
  15. }
复制代码
这样子就可以了,你使用方法的时候,你的类都还没有定义,语句是找不到类的,等你的类加载了后,就能找到了,就能使用方法了

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 内部类在方法中,直接调用就可以了.

查看全部评分

回复 使用道具 举报
class StaticClass {
        public static void main(String[] args) {
                String name = new StaticClass().new InnerTest("aaa").getName();
                System.out.println(name);
               
        }
        class InnerTest {
                private String name;

                InnerTest(String name) {
                        this.name = name;
                }

                public String getName() {
                        return name;
                }
        }
}
这样可以么?为什么非要在main方法里声明内部类呢?

评分

参与人数 1技术分 +1 收起 理由
张立江 + 1 内部类在main方法外面被调用的时候,就需要.

查看全部评分

回复 使用道具 举报
String name = new StaticClass().new InnerTest("aaa").getName();
  System.out.println(name);
这个我有点奇怪,楼主为什么会有这种想法?都是在main方法中,应该可以直接new InnerTest().为什么想着要加上new staticClass()呢?
回复 使用道具 举报
王渠 发表于 2012-8-5 11:02
这样子就可以了,你使用方法的时候,你的类都还没有定义,语句是找不到类的,等你的类加载了后,就能找到了 ...

是哦,应该是
回复 使用道具 举报
李龙276596456 发表于 2012-8-5 11:05
class StaticClass {
        public static void main(String[] args) {
                String name = new StaticClass().new  ...

不可以,我错了
回复 使用道具 举报
黑马振鹏 发表于 2012-8-5 11:20
String name = new StaticClass().new InnerTest("aaa").getName();
  System.out.println(name);
这个我有 ...

实验下·····
回复 使用道具 举报
朱烈葵 发表于 2012-8-5 11:39
不可以,我错了

什么不可以?
回复 使用道具 举报
李龙276596456 发表于 2012-8-5 11:41
什么不可以?

这样式不可以的,因为内部类还没加载进来,明白了,谢谢
回复 使用道具 举报
问题已解决!
回复 使用道具 举报
朱烈葵 发表于 2012-8-5 11:46
这样式不可以的,因为内部类还没加载进来,明白了,谢谢

你把我写的代码直接粘过去,可以的,我都试验过的
回复 使用道具 举报
你的内部类怎么在方法中定义?好奇怪哦
回复 使用道具 举报
李龙276596456 发表于 2012-8-5 11:48
你把我写的代码直接粘过去,可以的,我都试验过的

你复制错了  你复制应该是二楼的
回复 使用道具 举报
刘润辰 发表于 2012-8-5 11:52
你的内部类怎么在方法中定义?好奇怪哦

实验呢····
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马