Java Reflectionを使用して、異なるクラスおよび異なるパッケージに存在する保護されたメソッドを取得して呼び出しようとしています。保護されたメソッドを含むJava Reflectionを使用したテストケースでの保護されたメソッドへのアクセス
クラス:
package com.myapp;
public class MyServiceImpl {
protected List<String> retrieveItems(String status) {
// Implementation
}
}
呼び出すクラスは:
java.lang.NoSuchMethodException: com.myapp.MyServiceImpl.retrieveItems()
がこれを読むために時間を割いていただき、ありがとうございます:
package xxx.myapp.tests;
import com.myapp.MyServiceImpl;
public class MyTestCase {
List<String> items;
public void setUp() throws Exception {
MyServiceImpl service = new MyServiceImpl();
Class clazz service.getClass();
// Fails at the next line:
Method retrieveItems = clazz.getDeclaredMethod("retrieveItems");
// How to invoke the method and return List<String> items?
// tried this but it fails?
retrieveItems.invoke(clazz, "S");
}
}
コンパイラは、この例外がスローされます。
1 - これは、例外がある問題であり、フラグを立てる。メソッドを取得したら、@ jkの答えに従ってアクセス可能にする必要があります。 –