Java 创建与另一个intsance相同类型的新实例
我会尽量让我的问题简单化: 我有以下的例子:Java 创建与另一个intsance相同类型的新实例,java,eclipse,Java,Eclipse,我会尽量让我的问题简单化: 我有以下的例子: MainClass mc=new ExtendingClass() 我想使用referencemc创建一个全新的实例。 我在网上读了好几页,但没有找到合适的答案 你可以假设它看起来像这样(也许这会帮助你理解)。 MyClass mc2=new mc.getBaseClass() 基本上,结果应该与此相同: MyClass mc2=ExtendingClass()但它允许我在运行时创建mc2,因为它可以是各种扩展类的实例 提前感谢。您可以尝试: mc.
MainClass mc=new ExtendingClass()
我想使用referencemc
创建一个全新的实例。
我在网上读了好几页,但没有找到合适的答案
你可以假设它看起来像这样(也许这会帮助你理解)。
MyClass mc2=new mc.getBaseClass()
基本上,结果应该与此相同:
MyClass mc2=ExtendingClass()
但它允许我在运行时创建mc2
,因为它可以是各种扩展类的实例
提前感谢。您可以尝试:
mc.getClass( ).newInstance( );
当然,这只有在ExtendingClass
没有参数或默认构造函数时才有效。如果要处理构造函数的参数,它会变得稍微复杂一点(例如,如果有一个构造函数使用字符串
):
Constructor=mc.getClass().getConstructor(String.class);
constructor.newInstance(“foo”);
welp,这似乎很管用。但是有没有一种方法可以不强迫我使用throw
声明或者用try-catch来包围它?@acid:no,因为如果(例如)没有参数构造函数,或者构造函数的私有,等等,它需要例外来实现这一点。为什么你要试图避免尝试捕获?这是一个标准且有用的构造,在java中,没有它你就走不远了。@Dogmatixed没有试图具体地避免它,只是试图以更全面的方式理解可能的解决方案。我的问题可能有点错了。现在读我的评论听起来有点刺耳。对不起,你的问题很好。
Constructor<ExtendingClass> constructor = mc.getClass( ).getConstructor(String.class);
constructor.newInstance("foo");