Java 未在默认构造函数中初始化变量
我有以下代码,当我尝试在“private final repository repository;”代码位中导入repository类时,我会在其中得到上述错误代码 我曾尝试添加“私有对象存储库”,但随后在“私有最终存储库”上得到了“变量存储库已在类restaurant controller中定义”。无论在哪里调用'repository.store'方法,我都会得到一个“找不到Object类型的符号方法存储(字符串)位置变量存储库”Java 未在默认构造函数中初始化变量,java,Java,我有以下代码,当我尝试在“private final repository repository;”代码位中导入repository类时,我会在其中得到上述错误代码 我曾尝试添加“私有对象存储库”,但随后在“私有最终存储库”上得到了“变量存储库已在类restaurant controller中定义”。无论在哪里调用'repository.store'方法,我都会得到一个“找不到Object类型的符号方法存储(字符串)位置变量存储库” package controllers; import he
package controllers;
import helpers.InputHelper;
import helpers.InputHelper;
import repositories.Repository;
import model.Restaurant;
import model.Review;
public class RestaurantController {
InputHelper inputHelper = new InputHelper();
char c = inputHelper.readCharacter("A:Restaurant Name -B: Review -C: Location -D: Rating");
static char DELIMITER=',';
**private final Repository repository;**
public void run() {
boolean quit = false;
do {
char choice = displayMenu();
switch (choice) {
case 'A':
addRestaurant();
String name = inputHelper.readString("Enter Restaurant Name: ");
repository.store(name);
System.out.println("Restaurant Name is: " + name);
break;
case 'B':
addReview();
String review = inputHelper.readString("Enter Restaurant Review: ");
repository.store(review);
break;
case 'C':
listLocationRestaurantDataInNameOrder();
String location = inputHelper.readString("Enter Restaurant Location : ");
repository.store(location);
break;
case 'D':
listRestaurantRatings();
String rating = inputHelper.readString("Enter Restaurant Rating : ");
repository.store(rating);
break;
case 'Q':
quit = true;
}
} while (!quit);
}
private char displayMenu() {
listRestaurantDataInIdOrder();
InputHelper inputHelper = new InputHelper();
System.out.print("\nA. Add Restaurant");
System.out.print("\tB. Add Restaurant Review");
System.out.print("\tC. List Location Restaurant Data In Name Order");
System.out.print("\tD. List Restaurant Ratings");
System.out.print("\tQ. Quit\n");
return inputHelper.readCharacter("Enter choice", "ABCDQ");
}
private void addRestaurant() {
System.out.format("\033[31m%s\033[0m%n", "Add Restaurant");
System.out.format("\033[31m%s\033[0m%n", "==============");
}
private void addReview() {
System.out.format("\033[31m%s\033[0m%n", "Add Restaurant Review");
System.out.format("\033[31m%s\033[0m%n", "=====================");
}
private void listLocationRestaurantDataInNameOrder() {
System.out.format("\033[31m%s\033[0m%n", "Name Order");
System.out.format("\033[31m%s\033[0m%n", "==========");
}
private void listRestaurantRatings() {
System.out.format("\033[31m%s\033[0m%n", "Restaurant Ratings");
System.out.format("\033[31m%s\033[0m%n", "==================");
}
private void listRestaurantDataInIdOrder() {
System.out.format("\033[31m%s\033[0m%n", "Restaurant Id Order");
System.out.format("\033[31m%s\033[0m%n", "===================");
}
}
您尚未初始化
存储库
,因此出现错误。不能对未初始化的对象调用方法 您需要使用存储库创建控制器
public class RestaurantController {
private final Repository repository;
public RestaurantController(Repository r) {
this.repository = r;
}
否则,您定义了一个未初始化的final变量,该变量无效。您可以删除final
,但该值将为null