如何在 java 中访问类外的静态块变量



我正在处理一些代码,我需要从一个类的静态块中访问另一个类的静态块中存在的变量"hs"。 注意:这两个类都预设在不同的包中。

代码如下:

public class A{
static {
HashSet<String> hs = new HashSet<>();
}
}

我在谷歌上搜索了一下,但没有任何帮助。 您的帮助将非常感激。

编辑:我不允许在此文件中进行更改,仍然需要从其他文件访问它。

为什么我需要这样做,因为我正在通过 JUnit 进行单元测试,并且这个块返回的内容没有我可以放置 assertEquals(( 的内容。所以我留下的选项是测试副作用,这个变量"hs"值正在作为副作用被更改。这就是为什么我需要从另一个文件访问它。

在类中将其声明为public static并在静态块中初始化它

class A1{
public static HashSet<String> hs;
static {
hs= new HashSet<>();
}
}

需要为变量"hs"创建getter和setter。

第 1 类:

public class Test {
public static HashSet<String> hs;
static {
hs = new HashSet<>();
hs.add("Test14");
hs.add("Test15");
hs.add("Test16");
}
public static HashSet<String> getHs() {
return hs;
}
public static void setHs(HashSet<String> hs) {
Test.hs = hs;
}

}

第 2 类

如果您需要在没有静态方法的情况下使用"hs"变量,那么:

public class Test2 {
public void test() {
Test ts = new Test();
ts.getHs();
}
}

如果您需要在静态方法中使用"hs"变量,则:

public class Test2 {
public static void test() {
Test.getHs();
}
}

最新更新