安卓我可以根据java中的特定条件用不同的对象初始化相同的变量名吗?
我有n个对象,在基于特定条件执行时,我需要其中任何一个。例如
switch(condition)
{
case 1:
Object1 obj = new Object1();
break;
case 2:
Object2 obj = new Object2();
break;
default:
defaultObject obj = new defaultObject();
break;
}
int getItem = obj.getItemFromObject();
我在代码的许多其他地方使用obj对象。 我知道这个问题可能看起来很琐碎甚至愚蠢,但请帮帮我。或者引导我找到另一种方法
# 1 楼答案
一种方法是使用一个超类来声明一个子类变量。如果你想要一个P类、Q类或R类的对象,那么就使用超级类a
P, Q, R will all extend A
以下是一些(未经测试的)代码:
# 2 楼答案
switch的case语句中声明的变量的分数对应于switch块。因此,不能在不同的情况下重新声明相同的变量。但是,您可以根据具体情况为同一变量指定不同的值
# 3 楼答案
首先,这是编译吗?(我认为它根本不会编译)
您已经在
switch
内声明了obj
对象,因此它会抱怨duplicate local variable obj
,因为您在单个块内有具有相同变量名的对象此外,当您调用此选项时,它将无法找到它(因为它不在其范围内):
int getItem = obj.getItemFromObject();
它会抱怨obj cannot be resolved
除非你之前在某处声明并初始化了
obj
当然,你可以根据你想要的条件初始化你的对象,这没什么大不了的