我如何实例化列表中的对象,例如

我想在文件中搜索begin,如果找到,则在其后添加存储代码。这是例子

public abstract class Structure
{
    private List<Structure> structureList = new ArrayList<Structure>();

    protected void setStructure(Filemanager file, String line)
    {
    /*
     * set all values at the object structure
     */
    line = file.getSourceLine();

    while (!line.contains("END_"))
    {
                    if (line.contains("TRANSLATE"))
                    {

                    }
                    else if (line.contains("BEGIN_OBJECT"))
                    {
                        structureList.add(new FunctionalStructure(line));
                    }
                    else
                    {
                        setValue(line);
                    }
                    line = file.getSourceLine();
            }
    }

    protected abstract void setValue(String line);
}

public abstract class FunctionalStructure extends Structure
{
    private String name;
    public FunctionalStructure(String line)
    {
        super();
        this.name = line.substring(line.indexOf("\"")+1, line.lastIndexOf("\""));
    }
    public String getName()
    {
        return this.name;
    }
    public List<Structure> Startfunctional()
    {
        return null;
    }
    protected abstract void setValue(String line);
}


我在实例化structureList.add(new FunctionalStructure(line));中有问题;

任何人都可以在上面一行中说出什么问题吗

最佳答案

我认为FunctionalStructure必须是一个抽象类(可能是Structure的扩展)。您不能实例化一个抽象类。

这就是为什么出现以下错误的原因:

Cannot instantiate the type FunctionalStructure


如果创建了FunctionalStructure类,则可能不小心将其标记为抽象。假设它实现了setValue(String)方法,则可以从类声明中删除abstract修饰符。

或者,在您使用的API中使用扩展FunctionalStructure的合适的具体类。

或者,使用匿名内部类:

structureList.add(new FunctionalStructure(line){
    public void setValue(String value) {
        // your implementation here
    }
});

09-27 18:28