0

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

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

谢谢!

代码应该是 3 个单独的类,Main、MovieDatabase 和 Movie。

在 Main 中初始化movieDatabase 的一个实例。在构造时,它调用 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; 
}
4

4 回答 4

1

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

于 2013-11-11T14:13:37.647 回答
0

如果您想int x从其他类访问,请编写:

public class myClass{
    public int x = 0;
}

要从其他类访问它,您只需编写:

myClass.x ... (do something)
于 2013-11-11T14:22:22.533 回答
0

首先,如果没有任何代码向我们展示,很难评估您真正遇到的问题。但是,您提到 main 方法,如 public static void main(String args[]){};

这个 main 方法是专门为运行应用程序而设计的,你的编译器需要那个特定的方法,它不是被设计为用作访问器方法,例如

public int getValue(){
return value;}

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

于 2013-11-11T14:18:40.680 回答
0

创建一个 getter 方法,它返回您的NameLibrary. 如果您的其他类从您扩展而来,则可以使用对您的类NameLibrary的对象引用来调用此 getter 方法。NameLibrary

于 2013-11-11T14:19:32.090 回答