通过java中不同类中的静态方法设置和获取静态变量值

Posted

技术标签:

【中文标题】通过java中不同类中的静态方法设置和获取静态变量值【英文标题】:Set and Get static variables values through static method in different classes in java 【发布时间】:2013-11-30 03:49:20 【问题描述】:

假设我有 3 个类:ADataB

我从 A 类传递了一个变量,该变量将传递的变量设置为 Data 类中的 public static 变量,Data 的类为 methodsetData(),并试图获得相同的值(我在 class A 中分配了这个值)在班上 B 使用 Data 的类 method getData()

Data类中的方法是publicand static

公共类数据

公共静态字符串名称D;

public static void setData(String name) nameD = name;

public static String getData() return nameD;

公开课 A

字符串名称A="测试";

Data.setData(nameA);

公共B类

字符串名称B; nameB = Data.getData(); println(nameB);

但在class B 中给出空字符串。

我该怎么做?

【问题讨论】:

试着把 nameB = Data.getData(); println(nameB);在构造函数中。 这很奇怪,你想在这里做什么。它看起来很吓人的代码。你的构造函数在哪里? 此代码无法编译。你想做什么? @MartínMarconcini 我想在另一个类1 中设置一个类成员的值,并尝试在另一个类2 中获取相同的值。 但是您是否意识到代码是一团糟?如果没有看到更多代码,即使不是不可能,也很难说出你的问题是什么。谁在创建 A 和 B 的实例?这些类是在哪里创建的?按哪个顺序?等等。很明显,你认为你正在做的并不完全是你写的。显然设置类成员的值是微不足道的,通过getter获取值也是微不足道的,你的问题在于我们还看不到的代码...... 【参考方案1】:

只需调用第一个类 A 来设置类 Data 的值,然后调用类 B 来获取数据中的值。

例如:

public class A
     String nameA="Test";
     public A() 
         Data.setData(nameA);
     
 

 public class B
      String nameB; 
      B() 
         nameB = Data.getData(); 
         System.out.println(nameB); 

      
 

 public class Data

    public static String nameD;

    public static void setData(String name) nameD = name; 

    public static String getData() return nameD; 
  

那么如果你做了以下,你会得到你的价值 新的 A(); 新 B();

【讨论】:

感谢您解决我的问题。【参考方案2】:

您可以传递对象并在传递的对象中有一个静态字段。

【讨论】:

【参考方案3】:

这不是有效的代码,因为您不能在任何方法之外执行像 Data.setData() 这样的语句。

如果你把这段代码放在A类中的一个方法中,然后在你的主程序中以正确的顺序调用这个方法(在调用getData()之前),它仍然会是非常混乱的代码,但你应该得到你想要的结果.

【讨论】:

以上是关于通过java中不同类中的静态方法设置和获取静态变量值的主要内容,如果未能解决你的问题,请参考以下文章

java复习路4

java类 2.18

Java中的静态方法是啥?

Java中的静态变量static

java类中的static成员变量和static方法简单介绍,持续补充

Java中的静态变量&静态方法