反射——通过工厂类来完成获取接口示例

2023-10-31

反射可实现程序中无new关键字,实现真正的解耦合

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Member;

/**
 * 只要是获取接口示例,都应该通过工厂类来完成
 */

interface IMessager {
    public void send(String msg);
}

class NewsPaper implements IMessager {
    @Override
    public void send(String msg) {
        System.out.println("【报纸报道】" + msg);
    }
}

class NetMessage implements IMessager {
    @Override
    public void send(String msg) {
        System.out.println("【网络消息】" + msg);
    }
}

class Factory {
    private Factory() {
    }

    public static IMessager getInstance(String className) {
        IMessager iMessager = null;
        try {
            iMessager = (IMessager) Class.forName(className).getDeclaredConstructor().newInstance();
        } catch (Exception e) {
        }
        return iMessager;
    }
}

public class TestDemo {
    public static void main(String[] args) {
        IMessager messager = Factory.getInstance("NewsPaper");   //获取指定的接口示例 可以传包+类名
        if (messager != null) {
            messager.send("www.baidu.com");
        }
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

反射——通过工厂类来完成获取接口示例 的相关文章

  • Java:迭代 Collection 的最佳方法(此处为 ArrayList)

    今天 当我看到一段我已经使用了数百次的代码时 我很高兴地开始编码 迭代集合 此处为 ArrayList 出于某种原因 我实际上查看了 Eclipse 的自动完成选项 这让我想知道 在什么情况下以下循环比其他循环更好使用 经典的数组索引循环
  • Java:如何从转义的 URL 获取文件?

    我收到了一个定位本地文件的 URL 事实上我收到的 URL 不在我的控制范围内 URL 按照 RFC2396 中的定义进行有效转义 如何将其转换为 Java File 对象 有趣的是 URL getFile 方法返回一个字符串 而不是文件
  • wait() 在游戏中如何工作?

    在 playframework 的文档中here http www playframework org documentation 1 2 1 asynchronous已写 public static void loopWithoutBlo
  • 如何在不超过最大值的情况下增加变量?

    我正在为学校开发一个简单的视频游戏程序 我创建了一个方法 如果调用该方法 玩家将获得 15 点生命值 我必须将生命值保持在最大值 100 并且由于我目前的编程能力有限 我正在做这样的事情 public void getHealed if h
  • 如何安全地解决这个 Java 上下文类加载器问题?

    我的数百名用户中只有一位在启动我的 Java 桌面应用程序时遇到问题 他只有大约三分之一的时间开始 另外三分之二的时间在启动时抛出 NullPointerException Exception in thread AWT EventQueu
  • 在 S3 中迭代对象时出现“ConnectionPoolTimeoutException”

    我已经使用 aws java API 一段时间了 没有遇到太多问题 目前我使用的是库 1 5 2 版本 当我使用以下代码迭代文件夹内的对象时 AmazonS3 s3 new AmazonS3Client new PropertiesCred
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • Hazelcast 分布式锁与 iMap

    我们目前使用 Hazelcast 3 1 5 我有一个简单的分布式锁定机制 应该可以跨多个 JVM 节点提供线程安全性 代码非常简单 private static HazelcastInstance hInst getHazelcastIn
  • Calendar.getInstance(TimeZone.getTimeZone("UTC")) 不返回 UTC 时间

    我对得到的结果真的很困惑Calendar getInstance TimeZone getTimeZone UTC 方法调用 它返回 IST 时间 这是我使用的代码 Calendar cal Two Calendar getInstance
  • 以编程方式在java的resources/source文件夹中创建文件?

    我有两个资源文件夹 src 这是我的 java 文件 资源 这是我的资源文件 图像 properties 组织在文件夹 包 中 有没有办法以编程方式在该资源文件夹中添加另一个 properties 文件 我尝试过这样的事情 public s
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • 在 Spring 中重构这个的最佳方法?

    private final ExecutorService executorParsers Executors newFixedThreadPool 10 public void parse List
  • 测试弱引用

    在 Java 中测试弱引用的正确方法是什么 我最初的想法是执行以下操作 public class WeakReferenceTest public class Target private String value public Targe
  • Java中的Object类是什么?

    什么是或什么类型private Object obj Object http download oracle com javase 6 docs api java lang Object html是Java继承层次结构中每个类的最终祖先 从
  • Eclipse 中 Spring MVC 模型对象的 (jsp /jstl) 视图中的代码辅助

    在 Spring MVC 中 当将对象放置在视图模型中时 如下所示 public String getUser Model model fetch user model addAttribute user user return viewN
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树
  • 调整添加的绘制组件的大小和奇怪的摆动行为

    这个问题困扰了我好几天 我正在制作一个特殊的绘画程序 我制作了一个 JPanel 并添加了使用 Paint 方法绘制的自定义 jComponent 问题是 每当我调整窗口大小时 所有添加的组件都会 消失 或者只是不绘制 因此我最终会得到一个
  • 如何在 JFreeChart 中设置多个系列的线条粗细?

    我创建了很多图表 在他们每个人中我都需要打电话 renderer setSeriesStroke i new BasicStroke 2 0f 对于每个系列 renderer is chart getXYPlot getRenderer 我

随机推荐

  • Python之列表

    标题 列表 什么是列表 列表的创建 列表的删除 列表的访问 列表的常用方法 append insert extend pop remove clear count index list filter reduce lambda 列表支持的运
  • Tomcat:eclipse首选项中没有tomcat?

    为eclipse添加tomcat插件 近期因为兴趣 找了一个javaweb的纯SSM的项目 但是发现我的eclipse4 7版本的 首选项中竟然没有tomcat 所以在网上找了很多方法 终于找到一个很有用的博客 有俩种方法 方法一 一 下载
  • 【OpenCV学习笔记】【函数学习】四(origin+imageData+cvcopy()函数+CvMemStorage 类型+CvPoint类型)

    1 origin 在使用opencv显示图像时会出现图像倒立的情况 这与IplImage的origin属性有关系 origin为0表示顶左结构 即图像的原点是左上角 如果为1为左下角 一般从硬盘读入的图片或者通过cvCreateImage方
  • 289. 生命游戏(Java)

    题目描述 根据 百度百科 生命游戏 简称为生命 是英国数学家约翰 何顿 康威在 1970 年发明的细胞自动机 给定一个包含 m n 个格子的面板 每一个格子都可以看成是一个细胞 每个细胞都具有一个初始状态 1 即为活细胞 live 或 0
  • Python期末实训,爬虫实验报告

    Python爬取豆瓣电影 版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net qq 45774645 article details 11
  • 华为手机微信聊天记录删除怎么恢复?基于华为电脑助手备份的恢复方法

    华为手机最新的微信记录恢复方法 简单有效 HiSuite是华为手机官方的手机电脑助手管理软件 可以把手机设备上的数据备份至电脑 支持联系人 短信 应用程序等的备份 同样HiSuite也可以把微信库文件完整地备份到电脑上 这样就可以扫描微信库
  • 如何编写REST API

    编写REST API REST API规范 编写REST API 实际上就是编写处理HTTP请求的async函数 不过 REST请求和普通的HTTP请求有几个特殊的地方 REST请求仍然是标准的HTTP请求 但是 除了GET请求外 POST
  • Oracle 动态sql 实现方式

    1 2 Sample Program 10 Dynamic SQL Method 4 3 4 This program connects you to ORACLE using your username and 5 password th
  • 后端接口判断字段必填_ERP系统会计凭证中的那些必填项

    作者 Jelly 声明 本文章仅代表原作者观点 仅用于SAP软件的应用与学习 不代表SAP公司 01 凭证日期 凭证日期是必填的 凭证日期填写原始单据的日期 02 过账日期 过账日期是必填的 凭证正式过账到系统的日期 系统默认凭证记账当日
  • 微信小程序webview(H5页面)调用微信小程序支付

    1 业务描述 微信小程序商城入口进入的页面是商城H5页面 在H5页面进行微信支付如何实现 2 微信小程序 webview访问H5页面 必须使用微信小程序支付 如何实现以及实现方式以及支付后页面返回功能 商品详情 h5页面 gt 商品确认页
  • 人工智能不断发展扫码升级刷脸是必然趋势

    人工智能技术的不断发展 刷码升级成刷脸也是必然趋势 刷脸技术落地以后 迎合5G浪潮 将会提供更精准 更完善 更丰富化的服务 它的全面应用将会为企业带去智能化体验 也会引发新一轮的行业变革 起到真正的赋能作用 支付宝 微信支付 银联的三大巨头
  • Go Code Review Comments 译文

    持续更新中 原文最新链接https github com golang go wiki CodeReviewComments 5a40ba36d388ff1b8b2dd4c1c3fe820b8313152f Github译文链接https
  • Keil5添加.c文件与.h文件的方法-导入支持库-新大陆物联网竞赛-Lora模块&NBIOT模块例程-添加导入文件

    一 概述 在某些情况下 我们使用现用的物联网开发例程 例如新大陆物联网的Lora与NBIOT的例程 我们对其例程内目前所有的库不满意 不足以实现开发需要的功能 我们需要在原有工程上添加我们自己的库 以满足开发需要 二 操作步骤 首先 打开文
  • 【NodeJs-5天学习】第一天篇④ ——了解NodeJs回调函数和事件驱动机制

    NodeJs 5天学习 第一天篇 NodeJs回调函数和事件处理机制 1 Node js 中的回调 Callback 函数 2 Nodejs事件循环模型 2 1 浅析事件驱动 2 2 深入NodeJs事件驱动 3 总结 面向读者群体 电子物
  • logback 配置详解(二)——appender

    1 appender
  • solidworks 2020小金球_solidworks2020如何开启小金球RealView

    solidworks2020如何开启小金球RealView 如何查看sw否开启小金球RealView 只有在建模环境下依次点击 视图 显示 RealView图形 就可以看见小金球RealView是否开启 像图片中的呈现灰色 则表示小金球Re
  • 今天使用模板特化所遇到的问题

    template lt class T gt void test const T t cout lt lt void test const T t lt lt endl template lt gt void test lt int gt
  • Ubuntu中deb包详解及打包教程

    一 deb包详解 1 gt deb 包的文件结构 deb 软件包里面的结构 它具有DEBIAN和软件具体安装目录 如etc usr opt tmp等 deb包本身有三部分组成 组成 详细 数据包 包含实际安装的程序数据 文件名为 data
  • C# 中的Dispose()用法

    Dispose 在向大家详细介绍C 调用Dispose 方法之前 首先让大家了解下Dispose 方法 然后全面介绍C 调用Dispose 方法 我们已经知道了处置那些占用非受控 unmanaged 资源的对象的重要性 现在应该编写资源管理
  • 反射——通过工厂类来完成获取接口示例

    反射可实现程序中无new关键字 实现真正的解耦合 import java lang reflect InvocationTargetException import java lang reflect Member 只要是获取接口示例 都应