什么是控制反转?极悦小编来为大家解答。Java中自带的函数或对象都是编写软件的时候写的,当它需要调用你自己编写的数据的时候,它如何又不知道你定义的类(对象)是什么,里面有什么成员,它无法调用你的代码,这个时候就需要用到控制反转了。
简单来说,控制反转是java编写时留的一个接口,它可以通过这个Java接口来调用你自己写的代码。
如下代码是控制反转的一个示例,代码定义了一个按钮,将按钮添加进窗口中,
当点击时触发addActionListener(控制反转)
package test;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class test extends JFrame{ //需要继承JFrame
public test(String title)
{
JFrame frame = new JFrame(title);
JButton bnt3 = new JButton("Hello,Java");
JLabel lab1 = new JLabel("Hello,label");
frame.add(bnt3, BorderLayout.SOUTH);
frame.add(lab1);
frame.setBounds(200,200,300,200); //设置窗口的属性 窗口位置以及窗口的大小
// frame.pack();
frame.setVisible(true);//设置窗口可见
bnt3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
PrintPrompt(); //按钮调用类中的成员
lab1.setText("btn3");
frame.repaint();
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void PrintPrompt() {
System.out.println("this is a function");
}
public static void main(String[] args) {
new test("窗口"); //创建窗口
}
}
JButton类是很早就写好的,在编写时不可能想到后面我写了“test”类,它就需要进行控制反转。
JButton类知道自己什么时候被按下去了,JButton类有一个接口ActionListener,接口中只有一个函数:actionPerformed()。
JButton还有一对函数:addActionListener和removeActionLister。
如果你对JButton被按下去感兴趣(按下去执行操作),就实现一个ActionListener接口的子类,这样你定义出来的类也会有actionPerformed()的函数(继承),你可以对子类中的actionPerformed()函数进行各种操作,如调用外部类的成员(如果是内部类)、输出一个数值、改变窗口的显示等等。
操作完成后通过addActionListener将子类的actionPerformed()传递给JButton,JButton再通过actionPerformed返回来调用你传进来的成员。
因为数据(函数)是通过actionPerformed()传给JButton,所有格式肯定符合actionPerformed的规范,可以被JButton使用。
通过上述相信大家对什么是控制反转已经有所了解,大家如果想了解更多相关知识,可以关注一下Spring IOC控制反转,相信对大家的学习一定会有所帮助的。
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习