我试图使用面向对象的设计,但它有点令人困惑。我们说我有3个独立的对象
public class Tool{
String name;
Float weight;
}
public class Drawer{
String name;
Tool[] tool;
}
public class Toolbox{
String name;
Drawer[] drawer;
public void setDrawers(String[] drawers) {
for(int i = 0; i < drawers.length; i++) {
drawer[i].name = drawers[i];
}
}
}
所以工具有String和Float。抽屉有一个String和一个Tools数组。 Toolbox有一个String和抽屉数组。
所以,让我们在我的主要代码中说出来......
Toolbox myBox = new Toolbox();
myBox.setDrawers(drawers);
我得到空指针问题。如果我想实例化工具箱,那么实例化所有内容的正确方法是什么?每个类都在一个单独的Java文件中就可以,或者它们应该在一个文件中?由于所有类都在同一个应用程序中,我是否需要使用import语句?我的建筑师会是什么样子?还有什么我想念的吗?谢谢你的帮助。
请不要将此标记为&#34;空指针&#34;的副本。题。这不会解决包含其他对象数组的对象以及如何实例化所有对象。
答案 0 :(得分:2)
这是一种更标准的方法。
public class Tool {
final String name;
final double weight;
public Tool(String name, double weight) {
this.name = name;
this.weight = weight;
}
}
public class Drawer {
final String name;
final List<Tool> tools;
public Drawer(String name) {
this.name = name;
this.tools = new ArrayList<>();
}
}
public class Toolbox {
final String name;
final List<Drawer> drawers;
public Toolbox(String name) {
this.name = name;
this.drawers = new ArrayList<>();
}
public void addDrawers(String... names) {
for (String name : names) {
drawers.add(new Drawer(name));
}
}
}
现在你可以做到
String[] drawers = {"Screwdrivers", "Files", "Spanners"};
Toolbox toolbox = new Toolbox("My toolbox");
toolbox.addDrawers(drawers);
或者只是
Toolbox toolbox = new Toolbox("My toolbox");
toolbox.addDrawers("Screwdrivers", "Files", "Spanners");
答案 1 :(得分:1)
我收到空指针问题。
在myObject.callAMethod(aParameter)中; check myObject不为null。 另请参阅What is a NullPointerException, and how do I fix it?
如果我愿意,实例化所有内容的正确方法是什么 实例化工具箱?
每个班级都可以拥有自己的档案。如果你从java开始,我会这样做。有一些方法可以将所有内容放在同一个文件中,但您可以及时了解相关文件。 实例化的方式是以哪种顺序实现,有意义的是自下而上。第一个工具,然后是Drawer,然后是ToolBox。这样,当您创建封闭对象时,已经存在被绑定的元素。
我是否需要使用import语句
取决于您创建不同类的包。如果您需要导入该类,IDE将突出显示。
我已经阅读了整本关于在Android上编程Java的书,但事实并非如此 涵盖我问的问题。
这不可能是真的。