![](/img/trans.png)
[英]Caused by: java.lang.NoSuchMethodError: org.quartz.JobDataMap.put(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object
[英]java.lang.NoSuchMethodError: android.util.ArrayMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
我在進行 JUnit 測試時遇到了一個奇怪的錯誤。
我正在使用反射來調用我定義的方法: MyReflectUtil.callMethod(testManager, "loadPermission"); 在 testManager 中有一個 ArrayMap 的實例。 loadPermission 會在該實例上調用 get() 和 put()。
這是我定義的 ArrayMap:
public class ArrayMap<K, V> {
HashMap<K, V> map = new HashMap<>();
public void put(K key, V value) {
map.put(key, value);
}
public V get(K key) {
return map.get(key);
}
}
在方法 loadPermission 中,我可以調用 get() 方法,但是當我調用 put() 時,出現錯誤:
java.lang.NoSuchMethodError: android.util.ArrayMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
這是什么Ljava/lang/Object ? 當我記錄 myArrayMapInstance.getClass().getDeclaredMethods() 時,我得到:
public java.lang.Object android.util.ArrayMap.get(java.lang.Object), public void android.util.ArrayMap.put(java.lang.Object,java.lang.Object)
java.lang.Object前面沒有字母L。 但是我無法解釋為什么我可以調用 get(),因為它與 put() 基本相同。
任何人都可以幫忙嗎? 真的很感激!
Ljava/lang/Object;
右括號之后是預期方法的返回類型:
java.lang.NoSuchMethodError: android.util.ArrayMap.put(Ljava/lang/Object;Ljava/lang/Object;) Ljava/lang/Object;
您的調用需要一個返回某些內容的方法,但在您的ArrayMap
代碼中,此put
方法是void
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.