需要五个类
(容器类),需要用此容器管理的类全部集成此类
package com.metarnet.extend;
import java.lang.reflect.Field;
import com.metarnet.Injects.Inject;
/**
* 容器
*/
public class IOC {
/**
* 初始化
* @param <T>
* @throws ClassNotFoundException
* @throws IllegalAccessException
* @throws IllegalArgumentException
*/
public void Init() throws Exception
{
Field[] fields = getClass().getDeclaredFields();
for(Field field : fields){
Inject inject=field.getAnnotation(Inject.class);
if(inject!=null)
{
field.setAccessible(true);
field.set(this,Class.forName(inject.ClassName().trim()).newInstance());
}
}
}
}
(注解类)
/**
*
*/
package com.metarnet.Injects;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 类的依赖注入
* @author yanfan
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Inject {
public String ClassName();
}
(主函数用于测试)
package com.metarnet.Main;
import com.metarnet.Injects.Inject;
import com.metarnet.Interfaces.Interface1;
import com.metarnet.extend.IOC;
public class TestIOC extends IOC{
@Inject(ClassName = "com.metarnet.Interfaces.imps.Interface1Impl")
private Interface1 interface1;
@Inject(ClassName = "com.metarnet.Interfaces.imps.Interface1Impl2")
private Interface1 interface2;
public Interface1 getInterface1() {
return interface1;
}
public void setInterface1(Interface1 interface1) {
this.interface1 = interface1;
}
public static void main(String[] args) {
TestIOC ioc = new TestIOC();
try {
ioc.Init();
} catch (Exception e) {
e.printStackTrace();
}
ioc.interface1.SayHello();
ioc.interface2.SayHello();
}
}
接口
package com.metarnet.Interfaces;
public interface Interface1{
public void SayHello();
}
继承接口类1
package com.metarnet.Interfaces.imps;
import com.metarnet.Interfaces.Interface1;
public class Interface1Impl implements Interface1{
@Override
public void SayHello() {
System.out.println("Hello World,My Name Is Interface1Impl");
}
}
继承接口类2
package com.metarnet.Interfaces.imps;
import com.metarnet.Interfaces.Interface1;
public class Interface1Impl2 implements Interface1{
@Override
public void SayHello() {
System.out.println("Hello World,My Name Is Interface1Impl2");
}
}
另附资源下载地址http://download.csdn.net/detail/yanfan0916/4773699
分享到:
相关推荐
21-04-11_IOCDefaultDIPattern(001_通过默认ICO容器和自定义实现类的实例化操作_Web).rar
C# 代码实现的IOC容器功能,借鉴大佬写的,自己在优化了一些自定义的功能,可以直接引用到项目中,有示例代码。
ico替换工具
ICO制作技术——制作自己的ICO图标,可将bmp格式转变成ico格式
制作自己喜欢的图标,用ico图标制作工具!@快行动吧!!!
ICO资料ICO资料ICO资料ICO资料ICO资料ICO资料ICO资料ICO资料ICO资料ICO资料ICO资料
Photoshop 和 IcoFXPortable 两个软件配合使用,能制作出来清晰的透明ico文件。
ico制作工具 制作ico 透明ico制作
支持PS CS6 64位的ico输出插件 ICOFormat64.8bi 和 ICOFormat.8bi 我们做系统ICO图标时 , 为了美观 , 会使背景透明 , 但是 PS 本身 并没有 ICO 输出格式, 我们可能会用到IconWorkshop来 支持一下输出, 但是有...
ico图标收集ico图标收集ico图标收集ico图标收集ico图标收集ico图标收集ico图标收集ico图标收集ico图标收集ico图标收集
Photoshop ICO插件安装方法: 1、先将下载ICO插件压缩包进行解压,然后得到ICOFormat.8bi这个文件。 2、将得到的ICOFormat.8bi文件复制到PS安装目录下的Plug-Ins文件夹下,然后重启Photoshop后在保存选项里就会多...
ICOFormat64.8bi是一款使用后可使PS支持输出ICO格式图标文件的插件工具,很多朋友都在找的Photoshop支持ICO插件的64位版本ICOFormat64.8bi,本次已为大家提供。 安装说明: 1、打开Photoshop安装目录,找到Plug-ins...
ico转换工具\ico转换工具\ico转换工具ico转换工具\ico转换工具\ico转换工具
word的ICO图标,桌面显示的那个ICO图标
让你的Photoshop编辑制作ICO格式图标文件(ICOFormat支持图标文件插件) 相信很多制图的朋友都喜欢用PS,但是你能用Photoshop保存为ICO格式图标文件吗?默认肯定不行,不知道是什么原因,大名鼎鼎的图像编辑软件...
图标大全图标大全图标大全 ico图标大全 ico图标大全 ico图标大全 ico图标大全 ico
将ps等工具制作的图片生成ico格式,以便制作工程是的需要
ICO图标,常用ICO图标ICO图标,常用ICO图标ICO图标,常用ICO图标ICO图标,常用ICO图标ICO图标,常用ICO图标ICO图标,常用ICO图标ICO图标,常用ICO图标
ico图标 ICO图标 另外再收集的ico图标,很齐全。希望对大家有帮助。