抛出非法参数异常

问题描述:

我不明白为什么我的编译器在参数有效时显示非法参数异常。有任何想法吗?抛出非法参数异常

public class bikeBrakeTest { 
    public enum BrakeType {Caliper, Cantilever, LinearPull, Disc }; 
    public BrakeType brakes; 

    public bikeBrakeTest() //Defualt Constructor 
    { 
    brakes = BrakeType.Caliper; 
    } 

    public bikeBrakeTest(BrakeType aBrake) //Parameterized Constructor 
    { 
    setBrakes(aBrake); 
    } 


    public void setBrakes (BrakeType aBrake) //Mutator Method "set" 
    { 
    if (aBrake.equals("Caliper") || aBrake.equals("Cantilever") || aBrake.equals("LinearPull") || aBrake.equals("Disc")) 
    { 
     brakes = aBrake; 
    } 
    else throw new IllegalArgumentException("invalid"); 
    } 
} 

然后我的测试车是..

public class testing { 
    public static void main(String[] args) 
    { 
     bikeBrakeTest myBike = new bikeBrakeTest(); 
     myBike.setBrakes(bikeBrakeTest.BrakeType.Caliper); 
} 
} 
+1

1.它不是编译器。 2.为什么你认为'BrakeType'永远等于'String'? –

+1

“aBreak”不等于“Caliper”。不过,它可能等于'BrakeType.Caliper'。 –

你不能直接比较enumstring'Caliper',而你需要如下图所示使用aBrake == BrakeType.Caliper进行比较。

public void setBrakes (BrakeType aBrake) { 
     if (aBrake == BrakeType.Caliper || 
      aBrake == BrakeType.Cantilever || 
      aBrake == BrakeType.LinearPull || 
      aBrake == BrakeType.Disc) { 
        brakes = aBrake; 
     } 
     else throw new IllegalArgumentException("invalid"); 
} 
+0

非常感谢! –