用戶將鍵入要調用的方法及其參數。即:變量參數反射方法調用
- 功能1的param1
- 函數2的param1 param2的
- 功能N的param1 param2的.. paramN
假設所有參數都是字符串,我保存的用戶的所有輸入在字符串堆棧:
LinkedList<String> stack = new LinkedList<String>();
然後,使用反射我得到的方法:
SpreadSheet myClass = new SpreadSheet();
Class objClass = myClass.getClass();
Method meth1 = objClass.getDeclaredMethod(stack.pop());
我錯過了在棧中保留變量參數的方法調用方法。任何幫助?
Java反射教程由Oracle提供:https://docs.oracle.com/javase/tutorial/reflect/member/methodInvocation.html –
看起來您缺少調用方法的對象引用。 –
您需要調用'meth1.invoke(objectWithThatMethod,arguments)'在靜態方法'objectWithThatMethod'可以爲'null'的情況下。現在,您只需創建Object [] arguments'數組並填充堆棧中剩餘的元素。它不應該很難,因爲你知道堆棧的size()。 – Pshemo