Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中访问类外的静态块变量_Java_Unit Testing_Testing_Static Block - Fatal编程技术网

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

如何在java中访问类外的静态块变量,java,unit-testing,testing,static-block,Java,Unit Testing,Testing,Static Block,我正在编写一些代码,其中需要从一个类的静态块中访问变量“hs”。 注意:这两个类都预设在不同的包中 代码如下: public class A{ static { HashSet<String> hs = new HashSet<>(); } } 公共A类{ 静止的{ HashSet hs=新的HashSet(); } } 我在谷歌上搜索了一下,但没有找到任何有用的东西。 你的帮助将是非常可观的 编辑:我不允许对此文件进行更改,但仍需要从

我正在编写一些代码,其中需要从一个类的静态块中访问变量“hs”。 注意:这两个类都预设在不同的包中

代码如下:

public class A{
    static {
        HashSet<String> hs = new HashSet<>();
    }
}
公共A类{
静止的{
HashSet hs=新的HashSet();
}
}
我在谷歌上搜索了一下,但没有找到任何有用的东西。 你的帮助将是非常可观的

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


为什么我需要这样做,因为我正在用JUnit进行单元测试,而这个块没有返回任何我可以使用assertEquals()的内容。所以我留下的选项是测试副作用,这个变量“hs”值作为副作用被改变。这就是为什么我需要从另一个文件访问它。

在类中声明它为
公共静态
,并在静态块中初始化它

class A1{
public static HashSet<String> hs;
static {
     hs= new HashSet<>();
    }
 }
A1级{
公共静态哈希集hs;
静止的{
hs=新的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;
    }


}
如果您需要将“hs”变量与静态方法一起使用,则:

public class Test2 {

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

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

@谢谢你的快速回复。实际上,这项工作是这样的,我无法对代码进行更改,仍然需要从另一个文件访问它。你能帮我吗?你没有办法访问这个变量。它只在静态块期间临时存在,与类
A
无关。这可能是一个错误。也许你可以解释一下为什么你不想那样做?@lealcelderio不,不是。没有与局部变量关联的访问修饰符。@第二,我编辑了解释,请检查它是否澄清了我需要这样做的原因。to编写的他不能更改代码,因此这不是一个真正的选项。如果不更改代码@second,他将无能为力