Java的。在构造函数中初始化List

时间:2016-03-14 19:35:29

标签: java

我在构造函数中初始化List时遇到问题。

我正在尝试将参数分配给变量" tr"和tr.getVertices()是一个List。

SimpleTriangle tr = new SimpleTriangle(tr.getVertices(), tr.getColour(), tr.getThickness(), ShapeType.TRIANGLE);
trList.add(tr);

高亮tr.getVertices()并说"变量tr可能尚未初始化"

SimpleTriangle是子类。

public SimpleTriangle(List<Point> vertices, Color colour, int thickness, ShapeType shapeType) {
super(vertices, colour, thickness, shapeType); }

并且父类有方法

    public List<Point> getVertices() {
    return vertices;
}

3 个答案:

答案 0 :(得分:5)

您正尝试在尚未初始化的变量上调用方法:

//              v--this variable        v--is not yet initialized here
SimpleTriangle tr = new SimpleTriangle(tr.getVertices(), tr.getColour(), tr.getThickness(), ShapeType.TRIANGLE);

您正尝试使用自己的顶点初始化SimpleTriangle,这没有任何意义。您必须将List Point个{{1}}传递给构造函数。对于构造函数的所有其他参数也是如此。

答案 1 :(得分:3)

错误是正确的,在初始化之前不能使用变量。

你需要提供真正的价值观,而不是那些只会在将来有意义的价值观。

注意:Ruby确实允许您按照您的建议行事,并且可能被视为该语言设计中的错误。

答案 2 :(得分:0)

tr是要实例化的局部变量。您需要在使用其方法之前实例化对象。它就像你要求null来完成一个过程。事实上,你甚至不能将其称为null,因为java中的局部变量不是自动初始化的。