我从头开始(慢慢地)学习Java,但是我时不时地达到一些“真实的”代码,却发现一些令我困惑的东西。
以下行和类似的行:
JPanel panel = (JPanel) container.getContentPane();
Run Code Online (Sandbox Code Playgroud)
我的问题是(JPanel)和之间发生了container.getContentPane()什么?它不是像他们被成倍增加吗?
我知道这是语言的基本组成部分,随着我不断的学习,我将继续学习这部分内容,但是我真的很好奇,想立即知道它的含义。我真的不知道该怎么用谷歌获得答案。
它不是像他们被成倍增加吗?
否。它的意思是“得到该东西并将其视为JPanel。” 这称为类型转换,该语法在C ++,C#和许多其他语言中使用。
您必须确保类之间相互关联的方式允许强制转换。例如,这行不通:
JPanel p = new JPanel();
JComponent c = (JComponent)p;
JButton b = (JButton)c;
Run Code Online (Sandbox Code Playgroud)
JPanel是一个JComponent,因此是JButton,但JButton不从派生,JPanel因此您无法在这些对象之间进行转换。您也可以从孩子送回父母,如投JSpinner.DefaultEditor回JPanel,但不能从JPanel到JSpinner.DefaultEditor。