介面呼叫實現類&& 為什麼Autowired定義在介面上
阿新 • • 發佈:2018-12-14
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 stubDate 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
版權宣告:本文為博主原創文章,轉載請附上博文連結!