2010-10-01 83 views
1

我想创建一些我只能描述为“代码工厂方法”的东西。代码工厂方法

为了避免代码重复,我想创建一个包含要执行的代码的方法,但需要使用“占位符”来表示类型应该去的地方。该方法当然会将这些类型作为参数并将每个类型放在适当的位置。例如:

void factory(placeholder1, placeholder2){ 
    ArrayList<placeholder1> List = new ArrayList<placeholder1>; 
    Placeholder2 variable; 
} 
factory(String, Integer); 

会产生:

ArrayList<String> List = new ArrayList<String>; 
Integer variable; 

任何想法如何我会去吗?

非常感谢您的帮助。

编辑:谢谢你的所有反馈。我采用了通用方法,并且一直工作了一段时间,直到我遇到我相信某人早先提到的东西。我想使用其中一个通用对象之一的方法,如:

Integer variable = new Integer();
variable.isInteger();

看来我不能用泛型来做到这一点。有没有可能解决这个问题?

+3

您可能会从泛型教程中受益:http://download.oracle.com/javase/tutorial/extra/ generics/index.html – 2010-10-01 20:11:46

+2

在java中,“在多个位置执行代码以允许代码重用”的技术是“创建一个包含代码的方法”。在你的例子中你正在做的是描述利用预编译器(例如,用C语言)并且在Java语言中不支持的“通过重复使用”技术。 – DwB 2010-10-01 20:17:54

+0

@dwb,是否认为OP正在寻求Java泛型之外的东西? – 2010-10-01 20:18:34

回答

2

下面是它会怎样看:

<placeholder1, placeholder2> void factory(){ 
    ArrayList<placeholder1> List = new ArrayList<placeholder1>; 
    placeholder2 variable; 
} 
this.<String, Integer> factory(); 

但我与马特同意,你应该对仿制药读了。此外,谨慎的类型擦除,因为这可能不会做你期望的一切。

2

而不是简单地采用泛型,它看起来像你想要某种宏观设施。 Java没有。例如,为了扩展您的示例,您无法做任何类似的操作:

factory(String, Integer); 
List.get(variable);