kingd 发表于 2011-8-5 22:42

java 的小问题

很久没用java,看见一道题,不太明白,熟悉java 请帮我解释一下为什么,谢谢

3. class A { }
4. class B extends A { }
5. public class ComingThru {
6. static String s = "-";
7. public static void main(String[] args) {
8. A[] aa = new A;
9. B[] ba = new B;
10. sifter(aa);
11. sifter(ba);
12. sifter(7);
13. System.out.println(s);
14. }
15. static void sifter(A[]... a2) { s += "1"; }
16. static void sifter(B[]... b1) { s += "2"; }
17. static void sifter(B[] b1) { s += "3"; }
18. static void sifter(Object o) { s += "4"; }
19. }
What is the result?
A. -124
B. -134
C. -424
D. -434
E. -444
F. Compilation fails

sdong 发表于 2011-8-10 12:40

本帖最后由 sdong 于 2011-8-10 13:45 编辑

-434

> 10. sifter(aa);
Typ A[] ist nicht A[]..., daher wird sifter(Object o) aufgerufen. (4)

> 11. sifter(ba);
Eindeutiger Typ B[], daher wird sifter(B[] b1) aufgerufen. (3)

> 12. sifter(7);
ab Java 5 ist primitiver Typ autom. ein Objekttyp beim Aufruf, daher wird sifter(Object o) aufgerufen. (4)
页: [1]
查看完整版本: java 的小问题