不能对非静态方法进行静态引用
cant make a static reference to the non static method
我的问题有一个 google,虽然我可以找到许多标题相同的问题,但我似乎找不到适合我的示例的解决方案。
Library.java
public class Library {
public ArrayList<Book> books = new ArrayList<Book>();
public Library(){
super();
}
//Getters/Setters
public Library(ArrayList<Book> books) {
this.books = books;
}
public ArrayList<Book> getBooks() {
return books;
}
public void setBooks(ArrayList<Book> books) {
this.books = books;
}
LibraryTester.java
import java.util.ArrayList;
import java.util.Scanner;
public class LibraryTester {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Book> books = Library.getBooks(); //Getting error here
books = Library.CreateBooksArrayList();
MenuInput(sc, books);
sc.close();
Library.setBooks(books); //And here
}
将 getters/setters 更改为静态似乎不起作用,我绝对是 java 菜鸟所以这可能是一些愚蠢的错误,有人知道如何访问 getter/setter 'library' class 中的方法来自 'library tester' class。在此先感谢您的帮助
getBooks() 不是库 class 的静态方法。您需要创建库的实例,然后调用该实例的方法。 (也不确定当您查询图书列表然后调用 setBooks 将其设置为您阅读的值时,您试图用您的 main 方法完成什么......)。也会赞成阅读一两个好的教程的建议。
import java.util.ArrayList;
import java.util.Scanner;
public class LibraryTester {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Library lib = new Library();
ArrayList<Book> books = lib.getBooks();
MenuInput(sc, books);
sc.close();
}
看起来您正在尝试测试您的代码(好主意),但您使用了错误的工具。不要将您的测试用例包装在应用程序中 - 而是使用 jUnit 来执行和断言您的 class 行为。这可能会有用。
How to write a Unit Test?
我的问题有一个 google,虽然我可以找到许多标题相同的问题,但我似乎找不到适合我的示例的解决方案。
Library.java
public class Library {
public ArrayList<Book> books = new ArrayList<Book>();
public Library(){
super();
}
//Getters/Setters
public Library(ArrayList<Book> books) {
this.books = books;
}
public ArrayList<Book> getBooks() {
return books;
}
public void setBooks(ArrayList<Book> books) {
this.books = books;
}
LibraryTester.java
import java.util.ArrayList;
import java.util.Scanner;
public class LibraryTester {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Book> books = Library.getBooks(); //Getting error here
books = Library.CreateBooksArrayList();
MenuInput(sc, books);
sc.close();
Library.setBooks(books); //And here
}
将 getters/setters 更改为静态似乎不起作用,我绝对是 java 菜鸟所以这可能是一些愚蠢的错误,有人知道如何访问 getter/setter 'library' class 中的方法来自 'library tester' class。在此先感谢您的帮助
getBooks() 不是库 class 的静态方法。您需要创建库的实例,然后调用该实例的方法。 (也不确定当您查询图书列表然后调用 setBooks 将其设置为您阅读的值时,您试图用您的 main 方法完成什么......)。也会赞成阅读一两个好的教程的建议。
import java.util.ArrayList;
import java.util.Scanner;
public class LibraryTester {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Library lib = new Library();
ArrayList<Book> books = lib.getBooks();
MenuInput(sc, books);
sc.close();
}
看起来您正在尝试测试您的代码(好主意),但您使用了错误的工具。不要将您的测试用例包装在应用程序中 - 而是使用 jUnit 来执行和断言您的 class 行为。这可能会有用。
How to write a Unit Test?