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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李东城 中级黑马   /  2013-2-5 16:34  /  1304 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李东城 于 2013-2-6 02:55 编辑
  1. public class Singleton {


  2. String name;

  3. private static Singleton sinleton=null;

  4. private Singleton(){



  5. }



  6. public synchronized static Singleton getSinleton() {

  7. if(sinleton==null){

  8. sinleton=new Singleton();

  9. }

  10. return sinleton;

  11. }


  12. public String getName() {

  13. return name;

  14. }


  15. public void setName(String name) {

  16. this.name = name;

  17. }


  18. }

  19. class run{

  20. public static void main(String[] args) {

  21. Singleton s1 =Singleton.getSinleton();

  22. s1.setName("s1");

  23. Singleton s2 =Singleton.getSinleton();

  24. s2.setName("s2");

  25. System.out.println(s1.getName());

  26. System.out.println(s2.getName());



  27. }
  28. }
复制代码
这样子的话就无法运行了、为什么哦?  内部内有这个规定么?

5 个回复

倒序浏览
      首先不谈这个运行还是不能运行,你的主类命名为run是真心不应该呀,这是很不好的命名习惯。
回复 使用道具 举报
      我仔细看了你的代码。我首先得提一提,这里面没有内部类。你的错误在于应该把Singleton的public关键字去掉,run应该冠上这个关键字。一个java文件里,只允许有一个类被冠上public关键字,一旦冠上了这个关键字,文件名就必须是该类名。内部类是在一个类的内部。相当于一个类的变量。你这里是在一个文件里写了两个类。
回复 使用道具 举报
补充一下,你的run类有主方法,是可运行的,所以你得把public关键字给它。我也从未见过把run来当类名的。我们已经习惯了它是线程里的方法,所以还是建议你换个名字,并且首字母一定要大写。
回复 使用道具 举报
main函数是不是应该在主类啊,构造函数私有了还可以创建对象么?
回复 使用道具 举报
我很奇怪的是,你的外部类,根本没调用内部类对象。外部类是是不能直接使用外类对象的哦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马