什么是控制反转 - 极悦
首页 课程 师资 教程 报名

什么是控制反转

  • 2022-07-29 10:50:07
  • 517次 极悦

什么是控制反转?极悦小编来为大家解答。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大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交