在switch语句中声明后无法识别obj
switch (var){
case "YES" : {
Object1 obj = new Object1();
break;
}
default: {
Object2 obj = new Object2();
}
}
NewObject newObject = obj.objToNewObject(param);
我的问题是无法识别“ obj” ->“错误Java:找不到符号”
我当时想使用“默认”可以工作,但不能。 有帮助吗?
答案 0 :(得分:3)
代码中的对象obj
是switch 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/