全局变量的java独立文件
我有个新手问题。如果有两个或更多类共享的一些全局变量,如何将它们放在单独的文件中,以便任何类都可以读取和更新它们。这在不使用接口的情况下是可能的吗?是的,因为全局变量的java独立文件,java,global-variables,Java,Global Variables,我有个新手问题。如果有两个或更多类共享的一些全局变量,如何将它们放在单独的文件中,以便任何类都可以读取和更新它们。这在不使用接口的情况下是可能的吗?是的,因为接口s变量都是隐式的静态的,所以每个变量在jvm中只有一个实例 然而,[在我看来]更好的方法可能是在某个类中声明它们并使用它。是的,因为interfaces变量都是隐式的static,所以这些变量在jvm中只有一个实例 但是,更好的方法[在我看来]可能是在某个类中声明它们并使用它。最好的方法是通过接口方法访问共享应用程序状态,然后使用一个包
接口
s变量都是隐式的静态的
,所以每个变量在jvm中只有一个实例
然而,[在我看来]更好的方法可能是在某个类中声明它们并使用它。是的,因为
interface
s变量都是隐式的static
,所以这些变量在jvm中只有一个实例
但是,更好的方法[在我看来]可能是在某个类中声明它们并使用它。最好的方法是通过接口方法访问共享应用程序状态,然后使用一个包含变量的实现类,并在构造期间将该类的实例传递给其他类(它们接受该类作为接口的实例) 这比使用静态类或单例更好,因为它允许您模拟共享状态的功能进行测试,提高了一般代码的可重用性,并允许您更改共享状态的实现和配置,而不会影响使用它的任何代码 例如
最好的方法是通过接口方法访问您的共享应用程序状态,然后拥有一个包含变量的实现类,并在构造期间将该类的实例传递给其他类(它们接受该类作为接口的实例) 这比使用静态类或单例更好,因为它允许您模拟共享状态的功能进行测试,提高了一般代码的可重用性,并允许您更改共享状态的实现和配置,而不会影响使用它的任何代码 例如
你能给我解释一下这个部分吗:ApplicationSession session=newsomeapplicationsession()@user1064089,这只是实例化应用程序会话实例的一个示例(然后在构建时在其他类之间共享这一实例)。为了使这一部分在编写时有用,您还需要在接口中声明您的set方法(或者无法更改会话中的变量)@user1064089,这只是实例化应用程序会话实例的一个示例(然后在构建时在其他类之间共享这一实例)。为了使其在编写时有用,您还需要在接口中声明set方法(或者无法更改会话中的变量)。
// Session interface for all application shared state.
public interface ApplicationSession
{
public int getMaxUserLimit();
}
// A backing for the interface (simple in memory version, maybe future versions use a database, who knows).
public class SomeApplicationSession implements ApplicationSession
{
private volatile int maxUserLimit = 0;
public void setMaxUserLimit(int limit) { this.maxUserLimit = limit; }
public int getMaxUserLimit() { return maxUserLimit; }
}
// ClassA uses the supplied session.
public class MyClassA
{
private ApplicationSession session;
public myClassA(ApplicationSession session)
{
this.session = session;
}
}
// usage...
public class MyMain
{
public static void main(String[] args)
{
// Create / get session (ultimately possibly from a factory).
ApplicationSession session = new SomeApplicationSession();
ClassA myClassA = new ClassA(session);
// do stuff..
}
}