import javax.swing.*;
class Foo{
public static void main(String args[]){
JFrame f=new JFrame();
f.add("North",new JButton()); //Line 1
f.add(new JButton(),"North"); //Line 2
f.setVisible(true);
}
}
swing API 声明 JFrame 类包含 5 个名为 add 的方法,它们继承自 java.awt.Container,另一个 add 方法继承自 java.awt.Component。
**Their signatures are as follows:**
*Inherited from java.awt.Container*
add(Component)
add(Component,int)
add(Component,Object)
add(Component,Object,int)
add(String,Component)
*Inherited from java.awt.Component*
add(java.awt.PopupMenu)
我预计 API 中会有两个带有签名 add(Component,String) 和 add(String,Component) 的重载方法。但鉴于情况并非如此,我假设第 1 行调用 add(String,Component) 而第 2 行调用 add(Component,Object)。
另外,谁能给我解释一下调用的方法是如何实现的。我试图通过查看 API 的源来弄清楚这一点,但是方法调用链就像一个迷宫,我可以使用以前去过那里的人的指导。