Java 如何使Main中的变量可供其他类访问?

Java 如何使Main中的变量可供其他类访问?,java,Java,例如,我有一个包含电影对象列表的MovieDatabase类。在我的主代码中,我初始化了MovieDatabase中的所有对象。但是,我希望在另一个类中调用此MovieDatabase来访问库。我该怎么做 我是否在主代码中添加get方法并返回它?或者是否有其他方法(例如,将对象列表更改为受保护/公共?) 谢谢 代码应该是3个独立的类,Main,MovieDatabase和Movie movieDatabase的一个实例在Main中初始化。构造时,它调用loadMovieList()并从文本文件填

例如,我有一个包含电影对象列表的MovieDatabase类。在我的主代码中,我初始化了MovieDatabase中的所有对象。但是,我希望在另一个类中调用此MovieDatabase来访问库。我该怎么做

我是否在主代码中添加get方法并返回它?或者是否有其他方法(例如,将对象列表更改为受保护/公共?)

谢谢

代码应该是3个独立的类,Main,MovieDatabase和Movie

movieDatabase的一个实例在Main中初始化。构造时,它调用loadMovieList()并从文本文件填充列表。但是,我希望从另一个类调用相同的movieDatabase实例化,以便访问电影,这样就不必重复加载

public class Main {

public static void main(String[] args) {
    MovieDatabase movieDatabase = new MovieDatabase();
}

public class MovieDatabase {
ArrayList<Movie>movieList = new ArrayList<Movie>();
String fileAddress = "D:/Users/Mine/School/Java/CZ2002_Assignment/src/MovieDatabase/movieDatabase.txt";

public MovieDatabase()
{
    numOfMovie=0;
    loadMovieList();
}

public int getNumOfMovie() {
    return numOfMovie;
}

public void addMovieToList(Movie movie) {
    movieList.add(movie);
    numOfMovie++;
}

public Movie selMovieByID(int movieID) {
    int index=-1;
    for (Movie m : movieList) {
            index++;   
            if (m.getMovieID() == movieID)
                break;
    }
    return selMovieByIndex(index);
}


public Movie selMovieByIndex(int index) {
    return movieList.get(index);
}

public void loadMovieList()
{
    //loads through text file
    addMovieToList(new Movie(tempMovie));
    System.out.println("Movie Database loaded");
}

public class Movie{
private int movieID;
private String movieName;
private int movieDuration;  //in minutes;
private String movieRating; //G; PG; PG13; NC16; M18; R21;
private boolean has3D;
private boolean status; 
}
公共类主{
公共静态void main(字符串[]args){
MovieDatabase MovieDatabase=新的MovieDatabase();
}
公共类电影数据库{
ArrayListmovieList=新的ArrayList();
String fileAddress=“D:/Users/Mine/School/Java/CZ2002_Assignment/src/MovieDatabase/MovieDatabase.txt”;
公共电影数据库()
{
numOfMovie=0;
loadMovieList();
}
public int getNumOfMovie(){
返回电影;
}
公众电影从业者(电影){
movieList.add(电影);
numOfMovie++;
}
公共电影selMovieByID(int-movieID){
int指数=-1;
对于(电影m:电影制作人){
索引++;
if(m.getMovieID()==movieID)
打破
}
返回selMovieByIndex(index);
}
公共电影selMovieByIndex(int索引){
返回movieList.get(索引);
}
公共void loadMovieList()
{
//通过文本文件加载
addMovieToList(新电影(临时电影));
System.out.println(“加载的电影数据库”);
}
公映{
私人电影ID;
私有字符串movieName;
private int movieDuration;//以分钟为单位;
私有字符串移动;//G;PG;PG13;NC16;M18;R21;
私有布尔has3D;
私有布尔状态;
}

如果你有一个依赖于名称库的类,你应该通过构造函数或set方法注入它。

首先,如果没有任何代码向我们展示,很难评估你真正有什么问题。 然而,您提到的主要方法,如 公共静态void main(字符串args[]){}

此主方法是专门为运行应用程序而设计的,您的编译器需要该特定方法,而不是设计为用作访问器方法 e、 g


这不是您无法访问main方法变量的唯一原因。main没有返回类型(由于使用了void)加上作用域的概念(每个方法都有一个作用域,任何包含变量的方法都可以看到该变量,但如果没有返回类型,它之外的任何方法都不能直接看到它)您可以使用作用域来限制在方法或类之外可以访问或不能访问的内容(这就是为什么类变量通常具有私有性,以限制可访问性)

创建一个getter方法,该方法返回
名称库
中的列表。如果您的其他类从
名称库
扩展,您可以使用对
名称库
类的对象引用调用此getter方法。

如果您希望从其他类访问
int x
,您可以编写:

public class myClass{
    public int x = 0;
}
要从其他类访问它,只需编写:

myClass.x ... (do something)

变量是静态的还是实例的?你能发布一些代码吗?这会让帮助变得更容易。这是否意味着我会有多个nameLibrary实例?比如如果我在主类中需要一次,我就创建它。如果我在另一个类中需要它,我就创建一个新的?这将是两个独立的实例,所以无论我在o中更新什么ne类不会反映在其他类上?是的,您在其他类中创建了一个,在主类中创建了一个。您有两个独立的实例,它们不会受到其他实例更改的影响
myClass.x ... (do something)