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如果需要,您可以授予自己访问构造函数的权限:当然,如果安装了安全管理器,而您没有必要的权限,则此升级访问的尝试将失败。请稍后再试重复是