单例注解框架EasyInject —— 减少书写冗余的模板型代码

EasyInject

旨在于使用注解解决减少书写常用的模板型代码,目前支持单例注解
github地址

  • dependencies

    添加依赖

def easy = '1.0.0'
implementation "com.lakehubo:easyinject:$easy"
annotationProcessor "com.lakehubo:injectutilAnnotationProcessor:$easy"
  • use it
@Singleton()
public class SingleTonTester {

    public String test;
		
    public SingleTonTester() {
        test = System.currentTimeMillis() + "";
    }

    public void showTime() {
        Log.e("lake", Thread.currentThread().getName() + ":showTime: " + test);
    }
}
  • test it
for (int i = 0; i < 100; i++)
    new Thread(() -> {
        SingleTonTester_Single.getInstance().showTime();
    }).start();

​ 当你使用了@Singleton()注解你想设置SingleTonTester类为单例时,通过make编译项目,编译器会自动生成对应的单例类SingleTonTester_Single,生成的该类为单例,原有并不会有任何改变,所以,当你使用单例来保障线程安全时,需要使用生成的SingleTonTester_Single类。

SingleTonTester_Single.getInstance()

​ 因为通过继承来实现的单例类,所以,被注解类需要为可继承的(非final修饰的class)。在注解类中,请保持构造函数至少为protected可继承或者public公有类型。

  • other param set

    单例注解,还支持单例模式的实现类型

SingletonType.DLC //双检查锁机制
SingletonType.INNER_STATIC //静态内部类机制
SingletonType.STATIC_BOX //静态块机制
  • use it
@Singleton(SingletonType.DLC)
public class SingleTonTester {}

当无参数时,默认为DLC模式的单例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值