2011-11-15 60 views
0

我会尽量保持我的问题很简单:创建同一类型的新实例作为另一个intsance

我有以下实例:

MainClass mc = new ExtendingClass()

我想创建一个全新的实例使用参考mc。 我已经在线阅读了多个页面,但没有找到合适的答案。

人们可以假设它会看起来东西这样〜(也许它会帮助你理解)。 MyClass mc2 = new mc.getBaseClass()

基本上,结果应该是一样的:

MyClass mc2 = ExtendingClass()但是,如果让我在运行时创建mc2,因为它可以延长各种类的实例。

在此先感谢。

回答

1

你可以尝试:

mc.getClass().newInstance(); 

这当然只是如果ExtendingClass有一个无参数的默认构造方法的工作原理。如果你想处理参数构造函数,它就会多一分复杂(例如,如果你有一个构造函数一个String):

Constructor<ExtendingClass> constructor = mc.getClass().getConstructor(String.class); 
constructor.newInstance("foo"); 
+0

韦尔普,这似乎这样的伎俩。但有没有可能有一种方法不会强迫我使用'throw'声明或将它与try-catch一起包围呢? – Acidic

+0

@Acidic:nope,因为如果(例如)没有无参数构造函数或构造函数的私有等,需要运行时发信号错误,并且需要例外来实现。 – Mac

+1

@Acidic你为什么试图避免尝试抓住?这是一个标准和有用的构造,如果没有它,你就无法在Java中取得很大的进展。 – Dogmatixed

相关问题