将对象声明为switch语句

时间:2019-05-29 15:41:10

标签: java

在switch语句中声明后无法识别obj

switch (var){
        case "YES" : {
              Object1 obj = new Object1();
              break;
       }
        default: {
              Object2 obj = new Object2();
       }

     }

NewObject newObject = obj.objToNewObject(param);

我的问题是无法识别“ obj” ->“错误Java:找不到符号”

我当时想使用“默认”可以工作,但不能。 有帮助吗?

2 个答案:

答案 0 :(得分:3)

代码中的对象objswitch statement的局部变量,因此不能在此范围之外访问。另外,为了能够将obj用作两个不同的类,您将必须使用Polymorphism,因此您必须声明一个基类(我将使用A来说明)和两个不同的类(B和C),扩展了A类。

class A {
    public NewObject(param) {
        return new NewObject();
    }
}

class B extends A{
    @Override
    public NewObject(param) {
        return new NewObject();
    }
}

class C extends A { 
    @Override
    public NewObject(param) {
        return new NewObject();
    }
}

A obj = null;
switch (var){
        case "YES" : {
              obj = new B();
              break;
       }
        case "NO": {
              obj = new C();
       }
        default: {
              obj = new B();
       }

     }
NewObject newObject = obj.objToNewObject(param);

请注意,B类和C类必须override使用类A的方法objToNewObject,才能起作用

答案 1 :(得分:-1)

您需要在切换块外部声明对象。请看看https://www.geeksforgeeks.org/variable-scope-in-java/