我如何实例化列表中的对象,例如
我想在文件中搜索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
}
});