如何在 main 方法中获取在不同方法中设置的私有变量?
How do I get a private variable in the main method that was set in a different method?
我试图在方法中更改私有变量,然后在 main 方法中使用 getter 方法访问它们(如下所示),但是当我在 main 方法中获取私有变量时,它是始终为 0。如何在 main 方法之外的方法中设置私有变量,但仍然能够在 main 方法中访问该变量?
public class Example {
private int testNumber;
public static void main(String[] args) {
Example tester = new Example();
System.out.println(tester.getTestNumber());
tester.TheTestExample();
System.out.println(tester.getTestNumber());
}
public int getTestNumber(){
return testNumber;
}
public void setTestNumber(int x){
this.testNumber = x;
}
public void TheTestExample(){
Example MyTester = new Example();
MyTester.setTestNumber(4);
System.out.println(MyTester.getTestNumber());
}
}
您的应用程序创建了两个单独的 Example
实例。一个由 main
创建,另一个由 TheTestExample
创建
您似乎要问的是 main
如何在您的 TheTestExample
方法版本中的 MyTester
变量中获取对 Example
实例的引用。
答案是不能。您不能访问其范围之外的局部变量。该方法需要return那个变量中的引用,调用者需要保存它或者直接使用它。例如。
tester = tester.theTestExample();
System.out.println(tester.getTestNumber());
public Example theTestExample(){
Example myTester = new Example();
MyTester.setTestNumber(4);
System.out.println(MyTester.getTestNumber());
return myTester;
}
顺便说一句:
MyTester
不是私有变量。它是一个局部变量。局部变量没有/不能有访问修饰符。称它们为 "private" 在技术上是不正确的,并且令人困惑。 (对于其他人,可能也适用于您。)
MyTester
和 TheTestExample
严重违反了 Java 风格约定。方法和变量名称应始终以 小写 字母开头。
在您的代码中,您正在为 Test class 创建 2 个对象,一个在 main 方法中,另一个在 TheTestExample() 方法中。
并且您在 TheTestExample () 中为私有变量设置值 4。
如果您想打印在 main () 中的 TheTestExample() 中设置的值,您可以 return 从该方法中新设置的值。
public class 示例 {
private int testNumber;
public static void main(String[] args) {
Example tester = new Example();
System.out.println(tester.getTestNumber());
**System.out.println(tester.TheTestExample());** // it prints the value return from the method
}
public int getTestNumber(){
return testNumber;
}
public void setTestNumber(int x){
this.testNumber = x;
}
public int TheTestExample(){
Example MyTester = new Example();
MyTester.setTestNumber(4);
System.out.println(MyTester.getTestNumber());
**return MyTester.getTestNumber();**
}
}
public class Example {
private int testNumber;
public static void main(String[] args) {
Example tester = new Example();
System.out.println(tester.getTestNumber()); //prints "0"
tester.TheTestExample(); //print "4"
System.out.println(tester.getTestNumber()); //print "0" Why? ;) See the method TheTestExample -> print4() for now it is a better name
}
public int getTestNumber(){
return testNumber;
}
public void setTestNumber(int x){
this.testNumber = x;
}
public void TheTestExample(){
Example MyTester = new Example(); //local instance, @Answer we lost this object. If you want to change testNumber here. If you want to have access to this object please return and use in main method
MyTester.setTestNumber(4); //setFour
System.out.println(MyTester.getTestNumber()); //result in line 8
}
}
我试图在方法中更改私有变量,然后在 main 方法中使用 getter 方法访问它们(如下所示),但是当我在 main 方法中获取私有变量时,它是始终为 0。如何在 main 方法之外的方法中设置私有变量,但仍然能够在 main 方法中访问该变量?
public class Example {
private int testNumber;
public static void main(String[] args) {
Example tester = new Example();
System.out.println(tester.getTestNumber());
tester.TheTestExample();
System.out.println(tester.getTestNumber());
}
public int getTestNumber(){
return testNumber;
}
public void setTestNumber(int x){
this.testNumber = x;
}
public void TheTestExample(){
Example MyTester = new Example();
MyTester.setTestNumber(4);
System.out.println(MyTester.getTestNumber());
}
}
您的应用程序创建了两个单独的 Example
实例。一个由 main
创建,另一个由 TheTestExample
您似乎要问的是 main
如何在您的 TheTestExample
方法版本中的 MyTester
变量中获取对 Example
实例的引用。
答案是不能。您不能访问其范围之外的局部变量。该方法需要return那个变量中的引用,调用者需要保存它或者直接使用它。例如。
tester = tester.theTestExample();
System.out.println(tester.getTestNumber());
public Example theTestExample(){
Example myTester = new Example();
MyTester.setTestNumber(4);
System.out.println(MyTester.getTestNumber());
return myTester;
}
顺便说一句:
MyTester
不是私有变量。它是一个局部变量。局部变量没有/不能有访问修饰符。称它们为 "private" 在技术上是不正确的,并且令人困惑。 (对于其他人,可能也适用于您。)MyTester
和TheTestExample
严重违反了 Java 风格约定。方法和变量名称应始终以 小写 字母开头。
在您的代码中,您正在为 Test class 创建 2 个对象,一个在 main 方法中,另一个在 TheTestExample() 方法中。 并且您在 TheTestExample () 中为私有变量设置值 4。
如果您想打印在 main () 中的 TheTestExample() 中设置的值,您可以 return 从该方法中新设置的值。 public class 示例 {
private int testNumber;
public static void main(String[] args) {
Example tester = new Example();
System.out.println(tester.getTestNumber());
**System.out.println(tester.TheTestExample());** // it prints the value return from the method
}
public int getTestNumber(){
return testNumber;
}
public void setTestNumber(int x){
this.testNumber = x;
}
public int TheTestExample(){
Example MyTester = new Example();
MyTester.setTestNumber(4);
System.out.println(MyTester.getTestNumber());
**return MyTester.getTestNumber();**
}
}
public class Example {
private int testNumber;
public static void main(String[] args) {
Example tester = new Example();
System.out.println(tester.getTestNumber()); //prints "0"
tester.TheTestExample(); //print "4"
System.out.println(tester.getTestNumber()); //print "0" Why? ;) See the method TheTestExample -> print4() for now it is a better name
}
public int getTestNumber(){
return testNumber;
}
public void setTestNumber(int x){
this.testNumber = x;
}
public void TheTestExample(){
Example MyTester = new Example(); //local instance, @Answer we lost this object. If you want to change testNumber here. If you want to have access to this object please return and use in main method
MyTester.setTestNumber(4); //setFour
System.out.println(MyTester.getTestNumber()); //result in line 8
}
}