当前位置: 首页 > 知识库问答 >
问题:

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

彭硕
2023-03-14

假设我有三个类:AData,和B

我从类a传递一个变量,该变量将传递的变量设置为类数据中的公共静态变量,使用数据的类方法设置数据(),并尝试使用数据的类方法获取数据()在类中获得相同的值(我在类a中被分配)。

数据类中的方法有public和static

公共类数据{

公共静态字符串nameD;

公共静态void setData(字符串名){nameD=name;}

公共静态字符串getData(){return nameD;}

}

公共类A{

String nameA="Test";

数据setData(nameA);}

公共类B{

字符串nameB; nameB=Data.getData(); println(nameB);}

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

我该怎么做。?


共有3个答案

路伟
2023-03-14

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

如果将此代码放在类a中的一个方法中,然后在主程序中以正确的顺序调用此方法(在调用getData()之前),它仍然会是非常混乱的代码,但您应该会得到所需的结果。

钱选
2023-03-14

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

关正雅
2023-03-14

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

ex:

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; }
  }

然后,如果你做了以下操作,你会得到你的值new A(); new B();

 类似资料:
  • 我一直在读java中的同步,我有一个问题。我看到的例子是,一个类在一个本地对象上创建一个同步块。或者一个同步的方法。这两个都不适合我的情况。所以我有一个类的静态实例,它保存了整个应用程序的所有数据。该类上的变量被创建为“private”,我创建了getter来检索这些值。其中一些值一次只需要一个线程从应用程序中的不同类访问。由于它们被创建为private,所以我使用同步块,如下所示。。。 我可以通

  • 问题内容: 例如: 这些变量将在Java,堆或堆栈存储器中存储在哪里?它们如何存储? 问题答案: 静态方法(实际上是所有方法)以及静态变量都存储在PermGen堆的部分中,因为它们是反射数据(与类相关的数据,而不与实例相关的数据)的一部分。 更新说明: 请注意,只有变量及其技术值(原始或引用)存储在空间中。 如果你的静态变量是对对象的引用,则对象本身存储在堆的常规部分(青年/旧世代或幸存者空间)中

  • 问题内容: 我知道不可能在一个类中重写一个方法。但是,有没有办法使用非静态方法作为静态方法呢?例如,我有一个加数字的方法。我希望此方法在没有对象的情况下有用。是否可以在不创建其他方法的情况下执行类似的操作? 编辑:我的意思是,如果我将一个方法设为静态,我将需要它接受参数,如果我创建了一个已经设置了变量的对象,那么再次对具有相同参数的对象调用函数将非常不舒服。 我知道代码不正确,但是我想展示自己想做

  • 问题内容: 我有一个这样的课: 在我的Spark驱动程序中,我像这样设置名称并调用命令: 但是,我得到一个。如何将值传递给全局变量并使用它? 问题答案: 好的,基本上有两种方法可以将执行者已知的值带给执行者: 将值放在闭包中,然后序列化到执行程序以执行任务。这是最常见的一种,非常简单/优雅。示例和文档 在这里 。 用数据创建一个广播变量。这对于大容量的不可变数据很有用,因此您要保证仅发送一次。如果

  • 问题内容: 根据Java,静态变量可以通过类名访问,但是即使Java不建议使用静态变量,类对象也可以访问它们,并且给出相同的答案。 我知道该变量只有一个副本,并且所有对象和其他事物的值都相同。Java为什么建议使用类名而不是类对象? 问题答案: 因为可能会造成混淆!静态成员上没有动态调度。 看一下这个令人困惑的代码:(可能是语法错误;我的Java生锈了) 看起来很混乱,因为方法似乎是多态的,所以输

  • 问题内容: 如何从该类的静态方法获取该类的名称。例如 为了把它放在上下文中,我实际上想返回类名,作为异常中消息的一部分。 问题答案: 为了支持正确的重构(重命名类),则应使用以下任一方法: 或(感谢):