一个 Java 的问题,来这里问下,这问题很白痴吗。。怎么我在 segmentfault 提问被踩了两次,又没一个人肯回答一下。。

2019-11-30 09:59:47 +08:00
 so2back

好像不能发图片,我直接复制一下自己用来解释的代码,应该能看得懂说什么吧。。。我就想问问 generateMap 这个方法是能够实现的了的吗。。


public static void main(String[] args) { String name = "abc"; Integer age = 20; List<string> hobby = new ArrayList(); hobby.add("run"); hobby.add("swim"); // 这里直接调用方法,放入想要生成 map 的参数 generateMap(name, age, hobby); }</string>

public static Map generateMap(Object... entrys) {
    // 然后在这里根据接到的可变参数,生成一个 map,生成的 map 如下,就是根据收到的参数的名称对应放进去

// Map map = new HashMap(); // map.put("name", name); // map.put("name", age); // map.put("name", hobby); }

10092 次点击
所在节点    Java
86 条回复
so2back
2019-11-30 10:00:45 +08:00
v2ex 怎么发代码。。格式全乱了。。
so2back
2019-11-30 10:01:22 +08:00
public static void main(String[] args) {
String name = "abc";
Integer age = 20;
List<String> hobby = new ArrayList();
hobby.add("run");
hobby.add("swim");
// 这里直接调用方法,放入想要生成 map 的参数
generateMap(name, age, hobby);
}

public static Map generateMap(Object... entrys) {
// 然后在这里根据接到的可变参数,生成一个 map,生成的 map 如下,就是根据收到的参数的名称对应放进去
// Map map = new HashMap();
// map.put("name", name);
// map.put("name", age);
// map.put("name", hobby);
}
stancaohua
2019-11-30 10:05:34 +08:00
不行,去学下 map 怎么用的吧
sumarker
2019-11-30 10:08:17 +08:00
你的 map 的 key 都一样啊。。。
apach
2019-11-30 10:09:41 +08:00
可以
vjnjc
2019-11-30 10:09:43 +08:00
被踩是因为你没有描述清楚问题。请组织下语言用中文描述一遍。
你这样肯定不行,map.get("name")会得到 hobby
manami
2019-11-30 10:10:18 +08:00
map 的 key 不可以重复
so2back
2019-11-30 10:10:20 +08:00
@stancaohua map 我会用啊,只是觉得可能不在我知识了解范围内,我不知道可不可以实现这样的
so2back
2019-11-30 10:10:38 +08:00
@sumarker 这就是我要达到的效果啊
so2back
2019-11-30 10:11:35 +08:00
好吧,各位,我写错代码了。。。直接 ctrl + D 复制的没改过来。。下面才是
public static void main(String[] args) {
String name = "abc";
Integer age = 20;
List<String> hobby = new ArrayList();
hobby.add("run");
hobby.add("swim");
// 这里直接调用方法,放入想要生成 map 的参数
generateMap(name, age, hobby);
}

public static Map generateMap(Object... entrys) {
// 然后在这里根据接到的可变参数,生成一个 map,生成的 map 如下,就是根据收到的参数的名称对应放进去
// Map map = new HashMap();
// map.put("name", name);
// map.put("age", age);
// map.put("hobby", hobby);
}
wysnylc
2019-11-30 10:12:16 +08:00
java9 有 map.of
还有 beanutil https://blog.csdn.net/langqiao123/article/details/72961383
不要想些有的没的,好好百度好好学习,你想弄的骚操作早就有千万个前人想过了
lnchy
2019-11-30 10:12:21 +08:00
map 有问题,然后就是形参传给实参的时候 java 会重新申请个指针,没法拿到名称
so2back
2019-11-30 10:12:34 +08:00
@manami ctrl D 直接复制的代码忘改了#(苦笑)
lbfeng
2019-11-30 10:12:45 +08:00
先学下 markdown 吧
```java
代码在中间
```
maninfog
2019-11-30 10:12:48 +08:00
行不行你自己编译器敲下不就得了
so2back
2019-11-30 10:13:42 +08:00
@wysnylc 其实是我项目这类冗余代码有点多,我想直接用个方法整合一下- -
so2back
2019-11-30 10:13:55 +08:00
@lbfeng 好的
cmdOptionKana
2019-11-30 10:18:18 +08:00
问题描述不够清晰,建议明显地分为三个部分来描述问题

1. 我想得到什么
2. 我尝试了怎么做
3. 我得到了怎样的错误结果
sumarker
2019-11-30 10:18:52 +08:00
@so2back
你这这个生成 map 都方法怎么把可变参数变成具体都参数的?
可变参数的方法在接收你的入参以后 参数就变 Object []entrys 了啊,
你还有取数组 分别复制对应的参数吗?
反正我是没看懂你要干嘛。。。
Raymon111111
2019-11-30 10:19:11 +08:00
你说的参数名称是 name, age, hobby 这种变量名?

map 想放的东西是 map.put("name", name); map.put("age", age) 这样?

这个大概率是做不到的, 对于编译器来说, 人写的这些的变量名只是类似占位符的作用, 打包变成 .class 文件之后, 如果不特地开启保留变量名这种功能, 类方法所带的参数变成能在 .class 里找到的只有局部变量的槽位, 第一个参数(非 static 就是 this)在 slot 1, 第二个参数在 slot2 等等这样, 而不会有程序中真正的名字.

至于用 IDE debug 的时候为什么又能看见真正的名字, 可以搜一下 LVT.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/624528

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX