对不起,主题不好,但我找不到适合的写作方式。 (如果提供了误解,请输入正确的主题)。

所以我的问题是:
在这个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设置为字段即可。

10-08 14:43