Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建与另一个intsance相同类型的新实例_Java_Eclipse - Fatal编程技术网

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()

我想使用reference
mc
创建一个全新的实例。 我在网上读了好几页,但没有找到合适的答案

你可以假设它看起来像这样(也许这会帮助你理解)。
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");