小弟刚刚学java
发现switch后的控制表达式的返回值只能是byte,char,short,int中的一种,编了个程序,结果返回的是对象,编译错误,晕!
敢问,如果遇到多分支结构的判断返回值非以上几种,难道就必须用多个嵌套的if?(好像这样容易写错)

解决方案 »

  1.   

    用 instanceof 运算符吧~
      

  2.   

    用switch也可以的啊,只不过要把其他类型的变量转为byte,char,short,int中的一种而已,比如是一个对象,可以用对象的toString()方法把对象转换为字符串,再进行处理。
      

  3.   

    其实最好使用多态,很多switch 都可以转换为多态~
      

  4.   

    用switch也可以的啊,只不过要把其他类型的变量转为byte,char,short,int中的一种而已,比如是一个对象,可以用对象的toString()方法把对象转换为字符串,再进行处理。------------------------------------------------------------------------
    转换成字符串能解决?
    我是没见过
      

  5.   

    public class RadioButtonHandler implements ItemListener{
        public void itemStateChanged(ItemEvent e){
         if(e.getSource()==plain)
           t.setFont(plainFont);
         else if(e.getSource()==bold)
           t.setFont(boldFont);
         else if(e.getSource()==italic)
           t.setFont(italicFont);
         else if(e.getSource()==bldItc)
           t.setFont(bldItcFont);
         else if(e.getSource()==chgColor)
           t.setBackground(tcolors[chgColor.getSelectedIndex()]);     t.repaint();
        }
      }
    如这个事件处理类,需判断事件的源,这个怎么用多态啊?
    还有一个小问题,怎么设置JTextField中的text的颜色啊?
      

  6.   

    你返回对象用得着拿对象实例作switch的条件语句么,你不会在接口或父类里定义一个4种类型之一的成员变量,用这个来做switch的条件么;要不用instanceof 也行,不过这样就用不到switch了
      

  7.   

    楼主这种情况只能用if else了,都是RadioButton,不可能用instanceof来区别的