Java 从类实例创建对象
我想从扩展同一类的不同类创建对象。你能解释一下它是如何工作的吗。举个例子就好了 多谢各位Java 从类实例创建对象,java,class,Java,Class,我想从扩展同一类的不同类创建对象。你能解释一下它是如何工作的吗。举个例子就好了 多谢各位 class MainClass{ private <T extends DataPoint> void someMethod(Class<T> clazz) { new clazz(2,3);//<-- create object of class (did not work) } private void anotherClass(){
class MainClass{
private <T extends DataPoint> void someMethod(Class<T> clazz) {
new clazz(2,3);//<-- create object of class (did not work)
}
private void anotherClass(){
someMethod(GreenDataPoint.class);
someMethod(BlueDataPoint.class);
}
}
class DataPoint {
int x;
int y;
DataPoint(int x, int y) {
this.x = x;
this.y = y;
}
}
class BlueDataPoint extends DataPoint {BlueDataPoint(int x, int y){super(x,y);...}}
class GreenDataPoint extends DataPoint {GreenDataPoint (int x, int y){super(x,y);...}
class类main类{
私有方法(类clazz){
新clazz(2,3);//代替
newclazz();
试一试
clazz.newInstance();
祝你好运看起来你想创建一个动态选择的类的实例。获取一个带有必要参数的构造函数。class
对象有一个newInstance()
方法几乎相同,但使用构造函数将以与其他反射方法更一致的方式报告任何错误
Constructor<T> ctor = clazz.getConstructor(Integer.TYPE, Integer.TYPE);
T point = ctor.newInstance(2, 3);
Constructor=clazz.getConstructor(Integer.TYPE,Integer.TYPE);
T点=ctor.newInstance(2,3);
不再有编译器错误,谢谢。我更改了我的问题。如何使用参数创建新实例?我真的不知道在哪里使用它,但是…clazz.getDeclaredConstructor(新类[]{Integer.Class,Integer.Class})。newInstance(2,3);将Integer.class更改为Integer.TYPEConstructor时,此操作也有效。当然,必须是公共的…非常感谢!@JanneckLange如果需要,您可以授予自己访问构造函数的权限:当然,如果安装了安全管理器,而您没有必要的权限,则此升级访问的尝试将失败。请稍后再试重复是