在Java中使用反射来创建新实例?

lia*_*ngo -2 java reflection

我想反映MyRow的一个对象然后得到一个My MyTable对象,我该怎么办?

这是我的java代码:

import java.util.*;
import java.text.*;
import java.util.concurrent.*;
import java.lang.reflect.*;

class MyTable {
  private MyRows rows; 
  private List columns; 

  public List getColumns(){return this.columns;}
}

class MyRows extends ArrayList<MyRow> {//... 
}

class MyRow {
    protected MyTable table;
    private List<Object> data;

    private MyRow(MyTable p_table) {
        this.table = p_table;
       this.data = Collections.synchronizedList(new ArrayList(this.table.getColumns().size()));
    }
}

public class Test2 {
    public static void main(String args[]){
      try{
        MyTable myTable = new MyTable();        
        MyRows myRows = new MyRows();

        Constructor ctor = MyRow.class.getDeclaredConstructor(MyTable.class);
        ctor.setAccessible(true);
        MyRow myRow = (MyRow)ctor.newInstance(myTable); // Error: ava.lang.reflect.InvocationTargetException ??? how should I do here
        System.out.println(myRow);
        myRows.add(myRow);
        // myTable.rows = myRows;
      }catch(Exception e){ e.printStackTrace();}
    }
} 
Run Code Online (Sandbox Code Playgroud)

我不知道为什么得到这个例外,谁可以帮助我,请:(

F:\ java> javac Test2.java ...

在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)中的F:\ java> java Test2 java.lang.reflect.InvocationTargetException

    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
Run Code Online (Sandbox Code Playgroud)

rce)在Test2.main的java.lang.reflect.Constructor.newInstance(未知来源)(Test2.java:34)引起:MyRow的java.lang.NullPointerException.(Test2.java:22)... 5更多

F:\ java中

tbo*_*odt 6

MyTable不会初始化rows变量,因此当您尝试在其上调用方法时,您会得到一个InvocationTargetException.如果你看近底部,你会发现它是由一个引起的NullPointerException.