这是示例参考示例,适用于我正在寻找的解决方案
参考示例:
String demo = demoName;
现在,当从本地方法调用时,它需要使用本地变量覆盖变量值。
void test(String name) {
demoName = name;
System.out.println("Local Value:" + demoName);
System.out.println("Global Value:" + demo);
}
在这里demoName被参数值覆盖,但是当+ demo采用XYZ的类级别值时,我希望它是abc。
class demo1 {
public static String demoName = "xyz";
}
public class demos extends demo1 {
String demo = demoName;
void test(String name) {
demoName = name;
System.out.println("Local Value:" + demoName);
System.out.println("Global Value:" + demo);
}
@Test
public void testtest() {
test("abc");
}
}
我希望两个值都为“ abc”。
答案 0 :(得分:2)
由于add
是demoName
,因此您可以使用public
从任何地方重新分配它,根本不需要子类。
但是,使用公共静态变量并重新分配很糟糕。如果只想在子类的实例级别覆盖它,则应使用访问器并覆盖访问器:
Demo.demoName = "abc";
答案 1 :(得分:0)
字符串在Java中是不可变的
注意: :当两个String变量引用同一个对象时,如果一个变量在任何阶段更改其对象,则仅更改该变量Object而不更改另一个变量对象。
String demo = demoName;
在这行代码中,两个变量都引用相同的对象xyz
这意味着demo和demoName具有xyz
。
@Test
public void testtest() {
test("abc");
}
因为字符串在Java中是不可变的。请参阅Why is String immutable in Java? https://www.programcreek.com/2013/04/why-string-is-immutable-in-java/
例如:
static String a="Helloworld";
static String b=a;
public static void main(String[] args) {
System.out.println(a);
System.out.println(b);
a="World";
System.out.println(a);
System.out.println(b);
}
输出:
Helloworld
Helloworld
World
Helloworld
这是您的程序逻辑现在的流向,并且b引用其先前的Object Only。在更改了String Value之后,必须再次进行引用。下面的示例将为您提供思路。
public class Demo1 {
public static String demoName = "xyz";
}
class Demo extends Demo1 {
static String demo = demoName;
public void test(String variableName) {
//initially i am calling both varaibles which you assign
System.out.println(demoName);
System.out.println(demo);
// i am assigning the "abc" to demoName and calling both varaibales
demoName = variableName;
System.out.println(demoName);
System.out.println(demo);
// Now i am assigning the "abc" to demo and calling both varaibales
this.demo = variableName;
System.out.println(demoName);
System.out.println(demo);
}
public static void main(String[] args) {
Demo dem = new Demo();
dem.test("abc");
}
}
输出为:
xyz
xyz
abc
xyz
abc
abc