我正在处理一些代码,其中我需要从另一类访问存在于一类的静态块中的变量“ hs”。 注意:这两个类都预先设置在不同的程序包中。
代码如下:
public class A{
static {
HashSet<String> hs = new HashSet<>();
}
}
我在Google上进行了搜索,但没有发现任何有用的信息。 您的帮助将非常可观。
编辑:我不允许对此文件进行更改,仍然需要从另一个文件访问它。
为什么要执行此操作,原因是我正在通过JUnit进行单元测试,因此此块返回的内容没有任何内容,可以放入assertEquals()。因此,我留下的选项是测试副作用,并且此变量“ hs”的值将被更改为副作用。这就是为什么我需要从另一个文件访问它。
答案 0 :(得分:1)
在类中将其声明为public static
并在静态块中对其进行初始化
class A1{
public static HashSet<String> hs;
static {
hs= new HashSet<>();
}
}
答案 1 :(得分:1)
需要为变量“ 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();
}
}