如何在java中访问类外的静态块变量
我正在编写一些代码,其中需要从一个类的静态块中访问变量“hs”。 注意:这两个类都预设在不同的包中 代码如下:如何在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(); } } 我在谷歌上搜索了一下,但没有找到任何有用的东西。 你的帮助将是非常可观的 编辑:我不允许对此文件进行更改,但仍需要从
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,他将无能为力