对不起,主题不好,但我找不到适合的写作方式。 (如果提供了误解,请输入正确的主题)。
所以我的问题是:
在这个Circle和Square之后,我有Shape的接口和两个类的实现。
我需要编写收集圆形和正方形的类。它必须是不会添加任何重复对象的收集方法之一。阅读Java文档后,我选择了“设置”。但是我不确定这是否是个好主意。 (我可以使用以下四种方法之一:map.set.list。或queque)。
毕竟,我创建了另一个名为ShapeSet和方法的类。
public void ShapeSet(Shape Set)
看起来像这样:
public class ShapeSet {
public ShapeSet() {}
Set <Shape> setting; //is it wrong?
public void addShape(Shape shape) {
setting.add(shape);
}
...
}
在认为我做对了之后,我在主类中创建了定义正方形和圆形的构造函数。我还创建了
ShapeSet ss
。public static void main(String[] args) {
// TODO code application logic here
ShapeSet ss = new shapes.ShapeSet();
Shape c = new Circle(3);
Shape s = new Square(4);
ss.addShape(c);
ss.addShape(s);
ss.iterator();
}
但是在运行程序时,我在ss.addShape(x)行上出错,netbeans抱怨说他发现了空异常。为什么? ;(我认为输入到shapeset方法的类型是错误的,可能是声明集合设置的位置不正确。但是如何解决呢?我是Java的新手。谢谢您的帮助。在此先感谢您。
最佳答案
关于NullPointerException的答案可能是因为在ShapeSet类中,您没有像在
Set <Shape> setting = new HashSet<Shape>();
但是,我的问题是,为什么根本没有ShapeSet类?似乎只需要在具有main方法的类中将Set设置为字段即可。