从 Hashmap put() 中获取调用方法名称的列表

     2023-03-06     149

关键词:

【中文标题】从 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数组每一个元素的初... 查看详情