我想问的是,如果这个 list 是这样的:LinkedList<Integer> list = new LinkedList<>();
list.remove(0);
这个 0,是 index 0 还是里面的某个元素 0 ? 假设 list 里面有个元素的值也恰好是 0 。
反正我是晕了。
1
liufish 2020-10-24 09:15:27 +08:00
得空我试一下先😄
|
2
ciaoly 2020-10-24 09:23:03 +08:00 via Android
不懂。你这样用的话,参数 0 是 int 还是 Integer ?感觉应该是根据你传入的参数 0 的类型决定用哪个方法吧
|
3
ljpCN 2020-10-24 09:23:15 +08:00 via Android
可是 0 不是 Object 叭
|
4
leonme 2020-10-24 09:28:02 +08:00 via iPhone 4
类型由窄到宽选择
|
5
lance6716 2020-10-24 09:28:13 +08:00 via Android
好问题,感觉 Java 不好处理这个
|
6
ericgui OP |
7
1194129822 2020-10-24 09:31:56 +08:00 2
???这个问题不懂的话,建议先看 The Java Language Specification Java SE Edition.
重载是编译期就确定是哪个方法,如果还有个变元重载,那还更分不清了??? 编译期确认方法三个阶段 1.不允许装箱拆箱 也不允许变元重载 2.允许装箱拆箱重载 3.允许装箱拆箱 允许变元重载,变元重载优先级最低 |
8
nicocho 2020-10-24 09:36:29 +08:00 1
如果是传参是 int,那默认是调用 remove(int var1)
如果 Integer.valueOf()封装下 int 值,那就调用 remove(Object var1)了 如楼上说的,根据你传参类型是基本还是引用来决定的 |
9
ericgui OP @1194129822 我是前端,用 Java 做 Leetcode,老兄你稍安勿躁,少打两个问号,也同样可以表达你的意思。
谢谢哈,答案不错,已经感谢 |
10
cwek 2020-10-24 09:36:46 +08:00 3
|
12
yeqizhang 2020-10-24 09:40:24 +08:00 via Android
remove object 这个很少用的吧,都没印象有这个方法
|
14
wudaye 2020-10-24 12:24:44 +08:00 via Android
Jvm 规范对重载优先级有定义
|
15
aguesuka 2020-10-24 16:06:14 +08:00 via Android
建议配合 fun(Object[])fun(int...)fun(int[])fun(Object)使用
|
16
xuanbg 2020-10-24 16:19:56 +08:00
0 首先是 int,然后是 Integer,最后才是 Object 。
|
17
BBCCBB 2020-10-24 16:40:05 +08:00
你传 int 就是 index,你穿 Integer 就是 object??
|