我对编程略微陌生,而且我被卡住了。假设我在一个项目中有五个不同的类:foo1,foo2,foo3,foo4和foo5,它们都做了不同但类似的事情。现在说我需要创建每个对象的新对象,例如: foo1 bar1 = new foo1(); foo2 bar2 = new foo2(); foo3 bar3 = new foo3(); 等。 当然有效,但如果我可以在单个for循环中实例化所有我需要的对象,或者至少放置所有想要创建的对象,我真的试图找到一种节约大量空间的方法一个单独的数组来解决。如果它是全部相同的类,我可以得到它的工作,但如果它是不同的。它甚至有可能吗?在一个for循环中创建不同类的新对象
1
A
回答
0
尝试阅读您可以在Java中使用的多态性。接口和抽象类如何工作。什么是extends
和Java等implements
关键字...
我发现这些教程,看起来不错:
0
如果类名是按顺序,那么你就可以使用如下:
For(int i = 0; i < 10; i++) {
try {
Class<?> cls = Class.forName("foo"+i);
arr[i] = cls.newInstance();
} catch (ClassNotFoundException e) {
System.out.println("Class not found " + e);
}
}
但由于所有的对象都是异组eneous,阵列将必须是类型Object[]
0
听起来像factory method pattern是你在找什么。
您尝试多态处理的任务与平常不同,因为实例化通常要求您知道要创建的对象的具体类型。工厂将允许你这样做。
首先,你需要确保你想从同一个接口实例化派生类型:
interface Foo { }
class Foo1 implements Foo { }
class Foo2 implements Foo { }
然后,您可以定义一个工厂类型:
interface FooFactory {
Foo createFoo();
}
创建的实现FooFactory
返回不同类型Foo
:
class Foo1Factory implements FooFactory {
public Foo createFoo() {
return new Foo1();
}
}
class Foo2Factory implements FooFactory {
public Foo createFoo() {
return new Foo2();
}
}
存储这些工厂的数组:
FooFactory[] factories = {
new Foo1Factory(),
new Foo2Factory()
}
然后通过数组循环,呼吁每个工厂createFoo()
:
for(FooFactory factory : factories) {
Foo foo = factory.createFoo();
//...
}
相关问题
- 1. 在for循环中创建对象javascript
- 2. 使用for循环创建20个不同的对象
- 3. 通过一个对象创建一个新对象的循环
- 4. 在for循环中创建一个对象
- 5. 如何使用不同的名称在for循环中创建多个对象?
- 6. 循环创建新对象?
- 7. 如何使用for循环在类中创建对象?
- 8. 从for循环的输出创建一个js对象
- 9. 在for循环中创建对象。我遗漏了一点
- 10. 在for循环中创建新列表
- 11. 的Java不承认是在一个循环中创建的对象,循环
- 12. 如何动态创建一个循环中的新对象
- 13. 解析javascript for循环,创建多个对象而不重复
- 14. 创建一个“for”循环,返回不同数量的字符
- 15. JAVA - For循环不创建一个新的阵列
- 16. 在循环中添加同一类的新对象
- 17. 在一个循环中创建一个深(水平)对象
- 18. 在python的同一个类中创建一个类的新对象?
- 19. 新来的java,想创建一个循环,使对象
- 20. 在django admin中为for循环创建另一个模型对象
- 21. 写一个for循环来创建div
- 22. For循环仅创建一个图像?
- 23. 如何在javascript中使用for循环创建对象
- 24. 在MS Edge中通过for循环创建对象失败
- 25. 如何使用node-mysql在for循环中创建对象?
- 26. 创建for循环
- 27. 创建for循环
- 28. 命名在一个循环中创建的对象
- 29. 在for-in-loop中创建新对象
- 30. 在循环中创建对象
你应该阅读有关*什么是多态*。 –