Java 获取调用方法名称的列表';来自Hashmap put()的

Java 获取调用方法名称的列表';来自Hashmap put()的,java,reflection,aop,aspect,Java,Reflection,Aop,Aspect,你能帮我从HashMap put方法中获取list方法名吗 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&q

你能帮我从HashMap put方法中获取list方法名吗

 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 Book=新书();
书名(“小王子”);
书的作者(“Antoine de Saint Exupery”);
图书奖(9.99);
book.setPublisher(“Delux弹出式图书”);
HashMap=newHashMap();
map.put(“title”,book.getTitle());
map.put(“author”,book.getAuthor());
map.put(“prize”,String.valueOf(book.getPrize());
put(“publisher”,validateuppliser(book.getPublisher());
例外结果是:
book.getTitle()、book.getAuthor()、String.valueOf(book.getPrize())、ValidateUpplier(book.getPublisher())

ie just method name不是方法中的值。

如果要获得所使用的方法名,请将它们括在双引号中,作为实际字符串处理


HashMap=newHashMap();
map.put(“title”、“book.getTitle()”);
map.put(“author”、“book.getAuthor()”);
map.put(“prize”、“book.getPrize()”);
map.put(“publisher”、“book.getPublisher()”);

基于以下事实:在示例中,
map.put(“title”,book.getTitle())我们看到
“title”
我们可以安全地假设OP知道如何手动创建字符串。问题可能更多的是关于如何转换
map.put(“title”,book.getTitle())
转换为map.put(“title”、“book.getTitle()”)的等价物编程。既然你提到了,可能就是这样。不幸的是,这可能注定是一个挫折的练习,除非您开始遍历java源文件本身……所以工作方式是这样的:显示您尝试过的内容,并解释不起作用的内容。这不像“我有问题,请免费帮我解决”。还请解释一下,为什么你会想要这些信息?如果您对要放在地图中的值感兴趣,我会理解,但是为什么创建它们的源代码是相关的呢?在运行时,你没有源代码,你有字节码,后者看起来与前者大不相同。也许你刚刚开始编程,所以别担心,我们会帮助你的。也许您想通过使用
javap-c-pmyclass.class
检查目标类文件来检查字节码的外观。然后您将看到创建调用的顺序是(示意图)
Book.getPublisher()
→ <代码>MyClass.validatePublisher(字符串)
Map.put(String,String)
,也就是说,当调用
put(…)
时,源代码中括号内的内容已经被计算过了,因为这是JVM或计算通常在内部工作的方式。