首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >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;:java.lang.NoSuchMethodError
EN

Stack Overflow用户
提问于 2020-07-02 07:21:58
回答 1查看 88关注 0票数 0

在进行JUnit测试时,我遇到了一个奇怪的bug。

我使用反射来调用我定义的方法: MyReflectUtil.callMethod( testManager,"loadPermission");在testManager中有一个ArrayMap实例。loadPermission将对该实例调用get()和put()。

这是我定义的ArrayMap:

代码语言:javascript
复制
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()时,我得到了错误:

android.util.ArrayMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;:java.lang.NoSuchMethodError

这是什么Ljava/lang/Object??当我记录myArrayMapInstance.getClass().getDeclaredMethods(),时,我得到:

公共java.lang.Object android.util.ArrayMap.get( java.lang.Object),公共无效android.util.ArrayMap.put(java.lang.Object,java.lang.Object)

它在java.lang.Object前面没有字母L。然而,我无法解释为什么可以调用get(),因为它与put()从根本上是相同的。

有人能帮忙吗?真的很感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-02 07:30:30

结束括号后面的Ljava/lang/Object;是预期的方法的返回类型:

android.util.ArrayMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

java.lang.NoSuchMethodError

您的调用需要一个返回某些内容的方法,但是在您的ArrayMap代码中,这个put方法是void

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62691047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档