[英]How do I make variables in a Main accessible to other classes?
例如,我有一個MovieDatabase類,其中包含Movie對象的列表。 在我的主代碼中,我初始化了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;
}
如果您有一個依賴於NameLibrary的類,則應通過構造函數或set方法注入它。
首先,很難在沒有任何代碼向我們展示的情況下評估您真正遇到的問題。 但是,您提到了main方法,就像在公共靜態void main(String args []){};中一樣。
這個主要方法是專門為運行應用程序而設計的,您的編譯器需要該特定方法,而不是用作訪問器方法,例如
public int getValue(){
return value;}
這不是不能訪問主方法變量的唯一原因。 main沒有返回類型(由於使用了void),加上SCOPE的想法(每個方法都有一個作用域,任何包含變量的方法都可以看到該變量,但是沒有它,沒有它可以直接看到它)返回類型),您可以使用作用域來限制在方法或類之外可以訪問的內容或不能訪問的內容(這就是為什么類變量通常具有私有屬性以限制可訪問性)
創建一個getter方法,該方法返回NameLibrary
的列表。 如果您的其他類是從NameLibrary
擴展的, NameLibrary
可以將此getter方法與對NameLibrary
類的對象引用一起NameLibrary
。
如果希望其他類可以訪問int x
,請編寫:
public class myClass{
public int x = 0;
}
要從其他類訪問它,只需編寫:
myClass.x ... (do something)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.