在java中切换案例中的return语句

时间:2017-12-01 17:59:58

标签: java switch-statement

我有一个返回不同方法及其配置的开关盒。是否可以在经过所有开关盒后将其返回。

    switch (method.getindex())
     {
        case xxx:
        result= new method(new anothermethod1(something.getindex(0), something.getindex(1)), some varibale);
        break;
        case yyy:
        result= new method(new anothermethod2(something.getindex(0), some varibale);
        break;
     }
     retrun result;

这需要更改为在从案例中断后返回结果,并根据它选择的情况返回结果。 应该如下所示

    switch (method.getindex())
     {
        case xxx:
        break;
        case yyy:
        break;
     }
     return result = new method( new should take the method automatically when it enters into the corresponding case , some variable);

3 个答案:

答案 0 :(得分:3)

如果我理解正确,你会这样做:

<some type of switch result> switch_result;
switch (method.getindex())
{
    case xxx:
        switch_result = new anothermethod1(something.getindex(0), something.getindex(1));
        break;
    case yyy:
        switch_result = new anothermethod2(something.getindex(0));
        break;
}
retrun new method(switch_result, some varibale);

这是对的吗?

问题是放置什么&lt;某种类型的开关结果&gt;。您需要选择以下类型之一:

  1. anothermethod1和anothermethod2
  2. 的超类
  3. 由anothermethod1和anothermethod2
  4. 实现的界面

    还有一项要求。 &#34;方法&#34;必须有一个构造函数取&lt;某种类型的开关结果&gt;。否则它就不会起作用。

    另请注意,如果采用&#34;方法&#34; class具有所有三种类型的构造函数(anothermethod1,anothermethod2和&lt;某种类型的开关结果&gt;)然后在上面的代码中用于&lt;某种类型的开关结果&gt;将被召唤。

    以下是一个例子:

    public class C {
      static class A {}
      static class B {}
      C(A a, int x) { System.out.println("A " + x); }
      C(B b, int x) { System.out.println("B " + x); }
      C(Object o, int x) { System.out.println("Object " + x); }
    
      public static void main(String...args) {
        Object switch_result = null;
        switch (args.length) {
          case 0:
          switch_result = new A();
          break;
          case 1:
          switch_result = new B();
          break;
        }
        C result = new C(switch_result, 42);
      }
    }
    

    无论你传递给主要的论点有多少,它都会打印出#42;对象42&#34;

答案 1 :(得分:0)

您可以在每个return内放置这些不同的case语句,这样您就不需要在每个break的末尾使用case个关键字。< / p>

答案 2 :(得分:0)

在每种情况下,都有一组不同的变量,即

case xxx:
method1 = new AnotherMethod1(Something.getIndex());
var1 = someVariable;

然后在外面如果是switch语句:

return new Method(method1, var1);

希望这有帮助吗?