接口调用实现类&& 为什么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
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/theWinter/p/10120725.html

时间: 2024-08-29 01:40:41

接口调用实现类&& 为什么Autowired定义在接口上的相关文章

接口调用工具类

public class HttpClientApi { public static JSONObject getData(String url,String data) { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); httpPost.setHeader("Content-Type", "application/x-w

通过接口调用接口实现类实现松耦合(接口的多态)

项目开发在各个层中通过接口实现松耦合的时候,如何实现接口调用接口实现类? 这里的要求是接口有多个实现类,通过接口调用不的接口实现类! 开始,我想到了IOC(IOC最近忒火),确实有很多开发好的类库unity,ninject等等,但是这些类库都有点太强大了,例 如unity 是可以很容易实现我的要求,那么通过RegisterType<I, N>>(String name)注册:通过Resolve<I>(name) 就可以 用接口调用相应的接口实现类,如果想了解一下unity,

利用Java提供的Observer接口和Observable类实现观察者模式

对于观察者模式,其实Java已经为我们提供了已有的接口和类.对于订阅者(Subscribe,观察者)Java为我们提供了一个接口,JDK源码如下: 1 package java.util; 2 3 public interface Observer { 4 void update(Observable o, Object arg); 5 } 和我们上一篇实现的观察者一样,仅提供一个update方法用于接收通知者的通知做出相应改变. 我们再来看看Java为我们提供了一个怎样的通知者(Publish

EJBCA开发 webService接口调用

<转载请注明出处> 摸索这个东西好长时间了,资料太少无从下手找了个EJBCA的类似论坛的东西 一点点找入口..... 分享下:http://sourceforge.net/p/ejbca/discussion/132019/,有问题 里面的人很快会回答的,但是 他们是做盈利机构的有些问题.. EJBCA SVN路径:https://svn.cesecore.eu/svn/ejbca/tags/Rel_3_9_7/ejbca   这是3的版本 有其他的自己找吧. 一.先介绍下接口调用: EJBC

类与接口(三)java中的接口与嵌套接口

一.接口 1. 接口简介 接口: 是java的一种抽象类型,是抽象方法的集合.接口比抽象类更加抽象的抽象类型. 接口语法: [修饰符] [abstract] interface 接口名 [extends 父接口名列表]{ [public] [static] [final] 常量; [public] [abstract] 方法; [public] [static] 方法{}://JDK1.8后 [public] [static] 类/接口: } 2. 接口成员的修饰符 接口中的所有成员的访问权限默

aidl接口调用的问题

此篇来Mark一下Android中的aidl接口调用中的问题: aidl接口中的会通过回调返回一个自定义的IBinder实例: 通常我们调用时会先bindService,然后要等...之所以要等,是因为bindService之后,ServiceConnection接口中的回调onServiceConnected,总是会延时几百毫秒才会被调用到,所以,调用完bindService之后立即调用返回的IBinder实例是不行的: 有些资料中加了一个判断:binder != null,因为这个回调的延时

关于类、抽象类和接口的继承关系

关于类.抽象类和接口的继承关系 一.类和抽象类 当实体类Impl继承一个抽象类Abstract,该实体类Impl可以不用实现抽象类Abstract中的所有方法,但是必须实现抽象类中的所有抽象方法. 二.类和接口 当实体类Impl直接实现接口Interface,那么该实体类Impl必须是想接口Interface里面的所有接口方法. 三.抽象类和接口 当抽象类Abstract实现接口Interface,抽象类可以实现接口中的部分接口方法,也可以完全不实现任何接口方法. 理解:因为抽象类的功能类似接口

C# 调用API接口处理公共类 自带JSON实体互转类

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; using System.Web; n

http请求POST和GET调用接口以及反射动态调用Webservices类

此代码是API.WebSrvices动态调用的类,做接口调用时很实用. Webservices动态调用使用反射的方式很大的缺点是效率低,若有更好的动态调用webservices方法,望各位仁兄不吝贴上代码. using System; using System.IO; using System.Net; using System.Text; using System.Web; using System.Collections.Generic; using System.CodeDom.Compi