Я хочу отразить объект MyRow, а затем получить объект MyTable, как мне это сделать?Использование отражения в Java для создания нового экземпляра?
Это мой 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();}
}
}
И я не знаю, почему эту Exception, который может помочь мне, пожалуйста :(
F: \ Java> JAVAC test2. Java ...
F: \ Java> Java Test2 java.lang.reflect.InvocationTargetException в sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
RCE) в java.lang.reflect.Constructor.newInstance (Unknown Source) в Test2.main (Test2.java:34) Вызванный:. Java.lang.NullPointerException в MyRow (Test2.java : 22) ... 5 более
F: \ Java
Я думаю, вы найдете то же самое исключение, которое будет выброшено, если вы попытаетесь создать экземпляр 'MyRow', как правило, без отражения. – yshavit