问题描述
本人正在自学java,有下面疑惑publicclassColor{privateStringname;publicstaticfinalColorRED=newColor("红色");//........}
这个Color不是类名吗,我知道类中有构造方法,可以同名,但这个不是在定义方法啊,更像是定义字符串常量,为什么可以这样写?
解决方案
解决方案二:
Color类里面应该有一个和类同名的构造方法,用来初始化对象的newColor("红色");就是调用那个构造方法,生成一个类的对象并用RED指向这个对象
解决方案三:
这个不是在定义这个类么?以下是完整的代码,整体还算明白,就是publicstaticfinalColorRED=newColor("红色")的Color感觉莫名其妙publicclassColor{privateStringname;publicstaticfinalColorRED=newColor("红色");publicstaticfinalColorGREEN=newColor("绿色");publicstaticfinalColorBLUE=newColor("蓝色");publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}privateColor(Stringname){this.setName(name);}publicstaticColorgetInstance(inti){if(i==0){returnRED;}if(i==1){returnGREEN;}if(i==2){returnBLUE;}returnnull;}}
解决方案四:
你感觉奇怪就是因为在类中定义了自己的实力而已,如果Color换成Person或其他类你就应该不奇怪了
解决方案五:
哦,这不是语法的问题,因为能通过编译、能正常运行,语法没有问题属于语义的问题,下面是示例主要看main方法里面使用Color类的地方,有些用法易于理解有些地方让人迷惑而已packagetopics_390913711;publicclassColor{privateStringname;publicstaticfinalColorRED=newColor("红色");publicstaticfinalColorGREEN=newColor("绿色");publicstaticfinalColorBLUE=newColor("蓝色");publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}privateColor(Stringname){this.setName(name);}publicstaticColorgetInstance(inti){if(i==0){returnRED;}if(i==1){returnGREEN;}if(i==2){returnBLUE;}returnnull;}publicstaticvoidmain(String[]args){Colorred=newColor("红色");Colorgreen=newColor("绿色");Colorblue=newColor("蓝色");System.out.println(red.getName());System.out.println(green.getName());System.out.println(blue.getName());System.out.println(red.GREEN.BLUE.getName());//令人难以理解的例子Colorcolor=newColor("");System.out.println(color.RED.getName());System.out.println(color.GREEN.getName());System.out.println(color.BLUE.getName());}}
解决方案六:
用处是,“红色”等颜色对象经常用到,就在Color类中定义一个常量类RED,方便大家直接使用:Color.RED就可以了,无需每次都要new操作
解决方案七:
@Android_iPhone虽然回复了很多,但感觉乱乱的,至少试了下你写的代码,通不过。明明是常量的值么。@oh_Maxy,@u011564172是啊,这么用,总感觉有循环迭代的错误(自己想的词)一样。我就理解成构造实例了,算是每次是现实都默认带着的。。。。