关键词:
【中文标题】从 Hashmap put() 中获取调用方法名称的列表【英文标题】:Get the list of invoking method name's from Hashmap put() 【发布时间】:2020-07-31 21:08:52 【问题描述】:您能帮我从 HashMap put 方法中获取列表方法名称吗?
Book book= new Book();
book.setTitle("The Little Prince");
book.setAuthor("Antoine de Saint-Exupery");
book.setPrize(9.99);
book.setPublisher("Delux Pop-up book");
HashMap<String,String> map= new HashMap<String,String>();
map.put("title",book.getTitle());
map.put("author",book.getAuthor());
map.put("prize",String.valueOf(book.getPrize()));
map.put("publisher",validatePuplisher(book.getPublisher()));
例外结果是:book.getTitle(),book.getAuthor(),String.valueOf(book.getPrize()),validatePuplisher(book.getPublisher())
即只是方法名称不是方法中的值。
【问题讨论】:
SO 的工作方式如下:展示您尝试过的内容并解释无效的内容。这不是“我有问题,请免费为我解决”。还请解释为什么您甚至会以这种方式想要这些信息?如果您对要放入地图的值感兴趣,我会理解,但为什么创建它们的源代码相关?在运行时你没有源代码,你有字节码,后者看起来与前者完全不同。 也许您刚刚开始编程,所以不用担心,我们在这里为您提供帮助。也许您想通过使用javap -c -p MyClass.class
检查目标类文件来检查字节码的外观。然后你会看到创建调用的顺序是(示意性地)Book.getPublisher()
→ MyClass.validatePublisher(String)
→ Map.put(String, String)
,即当put(..)
被调用时,源代码中括号内的内容已经被评估,因为这就是 JVM 或一般计算在内部工作的方式。
【参考方案1】:
如果要获取使用的方法名,请将它们括在双引号中以被视为实际字符串。
HashMap<String,String> map= new HashMap<String,String>();
map.put("title","book.getTitle()");
map.put("author","book.getAuthor()");
map.put("prize","book.getPrize()");
map.put("publisher","book.getPublisher()");
【讨论】:
基于在 examplemap.put("title",book.getTitle());
我们看到"title"
我们可以安全地假设 OP 知道如何手动创建字符串。问题可能更多的是关于如何以编程方式将map.put("title",book.getTitle());
转换为map.put("title","book.getTitle()");
的等效项。
既然你提到它,那可能就是这种情况。不幸的是,这可能注定是一个令人沮丧的练习,除非你自己开始遍历 java 源文件......hashmap实现原理2(代码片段)
...uals(这也是为什么刚开始就重温hashcode和equals的原因)!HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,然后找到bucket位置来储存值... 查看详情
hashmap
HashMap的工作原理HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals... 查看详情
从方法中检索调用方法名称[重复]
...从对象中的多个位置调用。有没有一种快速简便的方法来获取调用这个流行方法的方法的名称。伪代码示例:publicMain()PopularMethod();publicButtonCl 查看详情
p8java13中hashmap的put方法
Put函数源码解析 HashMap的put方法执行过程可以通过下图来理解(摘自某大厂的博客,推荐从参考文献的链接去查看原文),自己有兴趣可以去对比源码更清楚地研究学习。 ①.判断键值... 查看详情
java中hashmap详解(代码片段)
HashMap详细解析HashMap的工作方式HashMap的实现原理HashMap的数据结构HashMap构造函数HashMap重要方法hash(K)put(K,V)resize()treeifyBin()get(K)Hash冲突HashMap总结HashMap中MAXIMUM_CAPACITY设置为1<<30HashMap中容量设置为2的整数幂次方HashMap中的负载因... 查看详情
hashmap和hashset的区别?
HashSet底层是基于HashMap实现的。HashSet的源码非常少,因为除了clone()方法、writeObject()方法、readObject()方法是HashSet自己实现的,其他方法都是直接调用HashMap中的方法。HashSet和HashMap对比1、HashSet实现了Set接口、HashMap实现了Map接口2... 查看详情
什么是hashmap?你为什么用到它?
参考技术AHashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法... 查看详情
(转)hashmap底层实现原理
①HashMap的工作原理HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象... 查看详情
hashmap底层原理以及与concurrenthashmap区别
HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到... 查看详情
关于java中hashmap的put方法中的参数问题
...,还有value中我应该插入什么值list.put(objcetkey,objcetvalue);HashMap是以键值对形式保存数据的,简单形容可以理解为学号(key),学员(value)object类型是java中除了基本数据类型以外的超类,也就是说只要你放的对象类型直接或间接继承object,... 查看详情
hashmap集合put元素的原理
HashMap集合put元素的原理:(1)计算key的hashCode(2)将key的hashCode作为计算因子,通过哈希算法计算HashMap的数组下标index(3)如果index下标的数组元素为空,直接put(新增元素)(4)如果index下标的数组元素不为空,调用key的equal方... 查看详情
转hashmap比较透彻的分析
HashMap的实现原理 原文: HashMap的实现原理众所周知,HashMap是用来存储Key-Value键值对的一种集合,这个键值对也叫做Entry,而每个Entry都是存储在数组当中,因此这个数组就是HashMap的主干。HashMap数组中的每一个元素的初始... 查看详情
为啥 HashMap 和 Hastable 的 put 方法有区别?
】为啥HashMap和Hastable的put方法有区别?【英文标题】:WhythereisdifferenceinHashMapandHastablemethodofput?为什么HashMap和Hastable的put方法有区别?【发布时间】:2013-12-1217:13:05【问题描述】:我想知道HashMap和Hashtable中put方法的区别HashTableput... 查看详情
java示例代码_如何在对象中预加载hashmap(没有put方法)
java示例代码_如何在对象中预加载hashmap(没有put方法) 查看详情
java集合hashmaphashtablehashset详解
...合,map集合是set集合的扩展只是名称不同,对应如下二、HashMap的工作原理 HashMap基于hashing原理,通过put()和get()方法储存和获取对象。 put()方法:它调用 查看详情
hashmap底层实现原理及面试问题
①HashMap的工作原理HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equ... 查看详情
hashmap底层实现原理及面试问题
①HashMap的工作原理HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equ... 查看详情
浅谈hashmap的底层原理
本文整理自漫画:什么是HashMap?-小灰的文章。已获得作者授权。HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些个Entry分散存储在一个数组当中,这个数组就是HashMap的主干。HashMap数组每一个元素的初... 查看详情