Java 从一个类调用另一个类中的受保护创建方法时,无法对数组类型OptionSet[]调用CreateOptionSet(int)
我创建了一个包含OptionSet数组类(即Color)的类Auto,该类连接到包含Options数组内部类(即Blue、Red)的OptionSet类。OptionSet和Options方法都受到保护,因此我正在创建一个Auto实例,它可以在读取文件时使用现有方法。虽然下面的Auto类的createOption方法有效(它链接到OptionSet方法createOption),但CreateOptionSet方法无效。我收到错误“无法在数组类型OptionSet[]上调用CreateOptionSet(int)”。然而,这似乎正是我在createOption方法中所做的。这种方法有什么不同 Automotive.java类:Java 从一个类调用另一个类中的受保护创建方法时,无法对数组类型OptionSet[]调用CreateOptionSet(int),java,protected,Java,Protected,我创建了一个包含OptionSet数组类(即Color)的类Auto,该类连接到包含Options数组内部类(即Blue、Red)的OptionSet类。OptionSet和Options方法都受到保护,因此我正在创建一个Auto实例,它可以在读取文件时使用现有方法。虽然下面的Auto类的createOption方法有效(它链接到OptionSet方法createOption),但CreateOptionSet方法无效。我收到错误“无法在数组类型OptionSet[]上调用CreateOptio
package model;
import model.OptionSet;
public class Automotive {
//variables
private String name;
private static float basePrice;
private OptionSet[] opSet;
//constructor
public Automotive(int size, String n) {
opSet = new OptionSet[size];
name = n;
}
public void createOptionsSet(int opSetSize) {
this.opSet.createOptionsSet(opSetSize);
}
public void createOption(int opSetLocation, int size) {
this.opSet[opSetLocation].createOption(size);
}
//more getters and setters
}
package model;
import model.OptionSet;
public class OptionSet {
//variables
private OptionSet[] opSet;
private Option opt[];
private String name;
//constructor
protected OptionSet(String n, int size) {
opt = new Option[size];
name = n;
}
//methods
protected void createOptionsSet(int size) {
OptionSet[] opSet = new OptionSet[size]; //creates OptionSet array
}
protected void createOption(int size) {
this.opt = new Option[size];
}
//inner class Option
protected class Option{
private String name;
private float price;
Option(String name, float price){
name = name;
price = price;
}
protected void createOption(String name, float price){
Option opt = new Option(name, price);
//more getters and setters
}
}
下面是OptionSet.java类:
package model;
import model.OptionSet;
public class Automotive {
//variables
private String name;
private static float basePrice;
private OptionSet[] opSet;
//constructor
public Automotive(int size, String n) {
opSet = new OptionSet[size];
name = n;
}
public void createOptionsSet(int opSetSize) {
this.opSet.createOptionsSet(opSetSize);
}
public void createOption(int opSetLocation, int size) {
this.opSet[opSetLocation].createOption(size);
}
//more getters and setters
}
package model;
import model.OptionSet;
public class OptionSet {
//variables
private OptionSet[] opSet;
private Option opt[];
private String name;
//constructor
protected OptionSet(String n, int size) {
opt = new Option[size];
name = n;
}
//methods
protected void createOptionsSet(int size) {
OptionSet[] opSet = new OptionSet[size]; //creates OptionSet array
}
protected void createOption(int size) {
this.opt = new Option[size];
}
//inner class Option
protected class Option{
private String name;
private float price;
Option(String name, float price){
name = name;
price = price;
}
protected void createOption(String name, float price){
Option opt = new Option(name, price);
//more getters and setters
}
}
optionset
是一个数组,使this.optset.createoptionset(optsetsize)成为数组代码>非法操作。您需要在元素上调用方法,而不是数组。非常感谢您的评论。在这种情况下,我如何绕过它来实际创建optionSet?我不确定当此时唯一存在的部分是opSet对象时要使用什么元素。您是否可以使用大小为的新数组初始化opSetSize
?我认为这很好,是的。只是我的大脑无法用它来回答这个问题。非常感谢。