Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从一个类调用另一个类中的受保护创建方法时,无法对数组类型OptionSet[]调用CreateOptionSet(int)_Java_Protected - Fatal编程技术网

Java 从一个类调用另一个类中的受保护创建方法时,无法对数组类型OptionSet[]调用CreateOptionSet(int)

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

我创建了一个包含OptionSet数组类(即Color)的类Auto,该类连接到包含Options数组内部类(即Blue、Red)的OptionSet类。OptionSet和Options方法都受到保护,因此我正在创建一个Auto实例,它可以在读取文件时使用现有方法。虽然下面的Auto类的createOption方法有效(它链接到OptionSet方法createOption),但CreateOptionSet方法无效。我收到错误“无法在数组类型OptionSet[]上调用CreateOptionSet(int)”。然而,这似乎正是我在createOption方法中所做的。这种方法有什么不同

Automotive.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.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
?我认为这很好,是的。只是我的大脑无法用它来回答这个问题。非常感谢。