本地静态变量和Java

时间:2014-06-13 03:05:20

标签: java static static-variables

我想知道如何在java中实现本地静态变量。我知道Java wount支持它。但实现同样目标的更好方法是什么?我不希望我的类中的其他方法访问变量,但它应该在方法的调用中保留值。

请有人告诉我。

4 个答案:

答案 0 :(得分:5)

我认为没有办法实现这一目标。 Java不支持“本地静态”a C,并且在保持源代码“真正的Java” 1 的同时无法对其进行改进。

  

我不希望我班级中的其他方法访问该变量,但它应该保留该方法调用的值。

最好的方法是使它成为普通(私有)静态,然后不要从其他方法访问它。最后一点应该很容易......“因为你正在写课。


1 - 我想你可能会破解一些涉及预处理代码的东西,但这会使各种其他事情变得不愉快。我的建议是不要去那里:这不值得痛苦。

答案 1 :(得分:4)

不是试图实际保护变量,使代码更加模糊和复杂,而是考虑通过注释和放置来实现逻辑保护。我在类的开头声明了普通字段,但是只能在该方法之前从一个方法访问该字段。包括一条评论,说它只应该在一种方法中使用:

// i should be used only in f
private int i;
/**
* Documentation for f().
*/
public void f(){
    System.out.println(i++);
}

答案 2 :(得分:1)

您想要的是能够在相关方法本身中约束中间计算结果。要实现此目的,您可以参考以下代码示例。假设您希望在i的多个调用中维护静态变量m()。您可以将变量i封装到仅A可见的类m()的字段中,而不是拥有这样一个对Java不可行的静态变量,创建方法{{1将f()的所有代码移到m()中。您可以复制,编译和运行以下代码,并查看其工作原理。

f()

答案 3 :(得分:0)

理论上,是的 - 但不是传统的方式。

我要做的是创建这个:

  1. 在私有修饰符下的完全不同的类中创建该对象,无法直接访问。

  2. 使用调试工具(如JDI)在另一个类中查找该变量,获取它的ObjectReference并直接操作或创建一个引用该对象的新变量,并使用该变量引用该变量对象,在你的方法中。

  3. 这非常复杂,因为使用JDI很难,你需要在2个进程上运行你的程序。 如果你想这样做,我建议你研究一下JDI,但我诚实的答案是寻找另一种解决方案。