Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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_Jgit - Fatal编程技术网

在java程序上保持类是一种好方法吗?

在java程序上保持类是一种好方法吗?,java,jgit,Java,Jgit,我正在用它做一些东西 情况是这样的 FileRepositoryBuilder builder = new FileRepositoryBuilder(); Repository repository = builder.setGitDir(new File(repodir)) .readEnvironment() // scan environment GIT_* variables .findGitDir() // scan u

我正在用它做一些东西

情况是这样的

FileRepositoryBuilder builder = new FileRepositoryBuilder();
        Repository repository = builder.setGitDir(new File(repodir))
            .readEnvironment() // scan environment GIT_* variables
            .findGitDir() // scan up the file system tree
            .build();
用户将打开一个git存储库,并以各种方式使用它

在程序中,此存储库在repository类中包含信息,各种函数将通过调用它来访问此存储库。这个存储库最初是由一个构建者像这样构建的

FileRepositoryBuilder builder = new FileRepositoryBuilder();
        Repository repository = builder.setGitDir(new File(repodir))
            .readEnvironment() // scan environment GIT_* variables
            .findGitDir() // scan up the file system tree
            .build();
在制作程序时,我认为我应该保持这个存储库在程序中打开并可用。我有一个想法,就是创建一个这样的类来保存当前打开的存储库

public class CurrentRepo{

    private static Repository repository;

    public static Repository getRepository(){
        return this.repository;
    }

    public static void setRepository(Repository repository){
        this.repository = repository;
    }
}
之后我会打电话给

CurrentRepo.getRepository()
获取已打开的存储库的信息

这会引起问题吗?这样不好吗


有更好的解决方案吗?

一般来说,我认为使用静态字段来存储这样的信息是可以的。然而,正如你所说

我应该在整个程序中保持此存储库的打开和可用性


gernal的问题是:是否可能在同一个JVM中运行多个程序实例,并且打开了不同的存储库?如果是这种情况,您应该避免使用静态字段(也称为全局变量)来存储此信息。尝试在您的程序中识别一个类,该类可以将您的信息存储为程序状态的一部分,该状态与程序一样长,而不是与JVM一样长。您仍然可以使用像
CurrentRepo
这样的类,该类包含当前打开的存储库中的所有信息,但是您不应该将这些信息存储在静态字段中。

为什么
CurrentRepo
声明为
静态
?这是一个内部类吗?@DavidConrad哦,不是。我想不需要声明。谢谢回答!我明白你的意思。我认为让CurrentRepo成为一种单身人士类型会很好。这样行吗?