1. 程式人生 > >介面呼叫實現類&& 為什麼Autowired定義在介面上

介面呼叫實現類&& 為什麼Autowired定義在介面上

1、介面與回撥

package edu.cqu.interfaceTest;

import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;

import javax.swing.JOptionPane;
import javax.swing.Timer;

public class TimeTest  {
    public static void main(String args[]) {
    
        ActionListener listener 
= new TimePrinter(); Timer t = new Timer(10000,listener); t.start(); JOptionPane.showMessageDialog(null,"退出程式嗎?"); System.exit(0); } } class TimePrinter implements ActionListener{ @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub
Date now = new Date(); System.out.println("現在時間時:" + now); Toolkit.getDefaultToolkit().beep(); } }

結果:

註釋:java有函式指標的對應物--Method物件,然後使用起來卻比較困難,速度也稍微慢一點,並且在編譯時不能提供型別的安全性檢查。因此,在任何使用C++函式指標的地方,都應該考慮使用Java中的介面。這就引出下面這個問題。

 

2、在SSM專案中,為什麼autowired註解在介面上

 

// 告訴spring mvc這是一個控制器類

 

// 告訴spring mvc這是一個控制器類
@Controller
@RequestMapping("")
public class CategoryController {
    @Autowired
    CategoryService categoryService;

    @RequestMapping("listCategory")
    public ModelAndView listCategory(){
        ModelAndView mav = new ModelAndView();
        List<Category> cs= categoryService.list();

@Autowired
CategoryService categoryService;

為什麼在CategoryController類中 @Auto明明註解在CategoryService 這個介面上 而注入的卻是CategoryServiceImpl這個實現類
因為: (自動裝配實現了CategoryService介面的的例項,只有CategoryServiceImpl實現了CategoryService介面,所以就會注入CategoryServiceImpl)

這種自動裝配 @Autowired 還是@Resource在裝配或者注入的時候都是先是例項化後再進行的 第一步都是先例項化

這裡他要例項化一個介面是不可能的 所以要找到他的實現類 例項化他的實現類
---------------------
作者:半壁江山009
來源:CSDN
原文:https://blog.csdn.net/qq_31963719/article/details/79458002
版權宣告:本文為博主原創文章,轉載請附上博文連結!