簡體   English   中英

java.lang.NoSuchMethodError: android.util.ArrayMap.put(Ljava/lang/Object;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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM