在JAVA中,一个类A中的常量,不能在另一个类B中的case后用A的对象调用吗?为什么?

classA{finalintMAX=10;}classB{ints=10;voidoprate(){Aa=newA();switch(s){casea.MAX:brea... class A{ final int MAX = 10;}class B{ int s = 10; void oprate() { A a = new A(); switch(s){ case a.MAX: break; } }}//----------------------------case a.MAX这条语句会出错, 展开
 我来答
tigerxuexi
2011-10-19 · TA获得超过105个赞
知道答主
回答量:125
采纳率:0%
帮助的人:65.6万
展开全部
case后面的表达式要求是常量,如果把final int MAX =10定义在B里面可以,但是定义在A里面,在B中对其进行引用就需要声明一个A的对象,这个对象是一个变量,所以a.MAX也就间接的成了一个变量,因此会报错!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
奔雷剑主wpc
2011-10-18 · TA获得超过214个赞
知道小有建树答主
回答量:284
采纳率:0%
帮助的人:226万
展开全部
A a = new A();这句你把a初始化了。a.MAX也被初始化了。所以a.MAX就不是常量了。case语句自然要报错。你不用 A a = new A();。直接在case中调用A.MAX就可以了
void oprate() {
switch(1){
case A.MAX:
break;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3800887
2011-10-20 · 超过12用户采纳过TA的回答
知道答主
回答量:61
采纳率:0%
帮助的人:28.3万
展开全部
class A{
public static final int MAX = 10; //增加static 关键字 成为常量
}
class B{
int s = 10;
void oprate() {
A a = new A();
switch(s){
case A.MAX: break; //直接用
}
}
}
有分嘛
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小悦小冉
2011-10-18 · TA获得超过126个赞
知道小有建树答主
回答量:332
采纳率:0%
帮助的人:192万
展开全部
支持楼上
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式