我在构造函数中初始化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;
}
答案 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中的局部变量不是自动初始化的。