Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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传递的类?_Java_Objective C_Instantiation - Fatal编程技术网

实例化用java传递的类?

实例化用java传递的类?,java,objective-c,instantiation,Java,Objective C,Instantiation,我有一个关于从作为方法中的参数传递的类实例化java中的新对象的查询,例如: void myMethod(Class aReceived){ object = new aReceived // object will be a superclass of aReceived } 我在几行代码中看到过使用objective-C实现这一点,但我不确定它在java中是如何工作的 你能帮忙吗 提前感谢;) 如果要通过无参数构造函数创建对象: void myMethod(Class&

我有一个关于从作为方法中的参数传递的类实例化java中的新对象的查询,例如:

void myMethod(Class aReceived){
    object = new aReceived       // object will be a superclass of aReceived
}
我在几行代码中看到过使用objective-C实现这一点,但我不确定它在java中是如何工作的

你能帮忙吗


提前感谢;)

如果要通过无参数构造函数创建对象:

void myMethod(Class<?> aReceived) {
  Object newObject = aReceived.newInstance();
  ...
}
[增编]

你怎么称呼这个方法

选项1-当您在编写代码时知道要传递给方法的类时:

myMethod(TestClass.class)
选项2-当要实例化的类的名称仅在运行时已知时,作为字符串:

String className = ....; // Name of class to be instantiated
myMethod(Class.forName(className));

如果要通过无参数构造函数创建对象:

void myMethod(Class<?> aReceived) {
  Object newObject = aReceived.newInstance();
  ...
}
[增编]

你怎么称呼这个方法

选项1-当您在编写代码时知道要传递给方法的类时:

myMethod(TestClass.class)
选项2-当要实例化的类的名称仅在运行时已知时,作为字符串:

String className = ....; // Name of class to be instantiated
myMethod(Class.forName(className));

Class
上有一个方法,用于创建该类的实例。您还可以查看整体。

上有一个方法,用于创建该类的实例。你也可以看看整个过程

这假定该类具有无参数构造函数


这假设类有一个无参数构造函数。

如果只有一个默认构造函数,则可以执行以下操作:

aReceived.newInstance();
Constructor ctor = aReceived.getConstructor(String.class);
object = ctor.newInstance("somestring");
如果需要传递参数,则不能使用此方法。但是您可以通过
getConstructor(Class参数类型…)

e、 g.如果您想将字符串作为唯一参数传递,您可以这样做:

aReceived.newInstance();
Constructor ctor = aReceived.getConstructor(String.class);
object = ctor.newInstance("somestring");

如果您只有一个默认构造函数,则可以执行以下操作:

aReceived.newInstance();
Constructor ctor = aReceived.getConstructor(String.class);
object = ctor.newInstance("somestring");
如果需要传递参数,则不能使用此方法。但是您可以通过
getConstructor(Class参数类型…)

e、 g.如果您想将字符串作为唯一参数传递,您可以这样做:

aReceived.newInstance();
Constructor ctor = aReceived.getConstructor(String.class);
object = ctor.newInstance("somestring");

我使用了areceive.newInstance();最初我收到一个类似这样的错误:未报告的异常java.lang.InstanceionException;必须捕获或声明要抛出。是的,这就是我需要的,我还必须添加几行“try”和“catch”来处理异常,即使它们实际上什么都不做,java编译器似乎还是希望看到它们。我最初认为我犯了键入错误,但它的java协议似乎期望出现这些错误;最初我收到一个类似这样的错误:未报告的异常java.lang.InstanceionException;必须捕获或声明要抛出。是的,这就是我需要的,我还必须添加几行“try”和“catch”来处理异常,即使它们实际上什么都不做,java编译器似乎还是希望看到它们。我最初认为我犯了键入错误,但它的java协议似乎期望出现这些错误;最初我收到一个类似这样的错误:未报告的异常java.lang.InstanceionException;必须被抓住或宣布被抛出。我通过在myMethod声明的末尾添加“throws Exception”解决了这个问题,该声明似乎已被清除。但是,我现在调用该方法时遇到了问题:尝试使用myMethod(testClass);其中testClass也是我在代码中定义的一个。有什么想法吗?再次感谢您的帮助;)在下面的回答中添加了另一部分来解决您描述的问题;最初我收到一个类似这样的错误:未报告的异常java.lang.InstanceionException;必须被抓住或宣布被抛出。我通过在myMethod声明的末尾添加“throws Exception”解决了这个问题,该声明似乎已被清除。但是,我现在调用该方法时遇到了问题:尝试使用myMethod(testClass);其中testClass也是我在代码中定义的一个。有什么想法吗?再次感谢您的帮助;)在我下面的回答中添加了另一部分,以解决您描述的问题。