【五】注入框架RoboGuice使用:(Your First POJO Injection)
上一篇我们简单的介绍了一下RoboGuice的使用(【四】注入框架RoboGuice使用:(Your First System Service Injection)),今天我们来看下普通Java对象的使用注解的方法:
(一)为了在Activity中普通Java对象使用注解,必须实现下面两个步骤:
①:创建继承RoboActivity的Activity
②:使用 @Inject来进行注解POJO(普通java对象)
在前面我们介绍了View控件。资源文件(Resources),系统服务(System Service)等Android平台特有的注解方法。RoboGuice同时也支持注解 Plain
Old Java Objects(普通Java对象)。
可是Roboguice仅仅会默认去调用该对象的无參数的构造方法。所以我们须要注解的类必须有该无參构造方法。
看以下的这个样例:
class MyActivity extends RoboActivity {
@Inject Foo foo; // this will basically call new Foo();
}
该注解会通过无參数构造函数进行默认创建该实例。
(二)使用带有參数构造函数注解
假设有的情况下我们不想使用默认的构造函数。而是使用一个特定带有參数的构造函数,你有以下两种选择:
①:你能够对POJO(普通java对象)的构造函数进行注解
②:你能够创建一个provider和一个binding来进行实现
另外一种的方法我会写一篇专门的文章进行介绍,到时候各位童鞋能够去看下。
今天我们先关注第一个方法。
如今我们如果Foo类有一个Bar实例作为參数的构造函数。然后对Foo的该有參数的构造函数使用@Inject进行注解,那么此时RoboGuice会使用该带有參数的构造函数进行实例化。以下看下实现:
class Foo {
Bar bar;
@Inject
public Foo(Bar bar) {
this.bar = bar;
}
}
那么如今这里的RoboGuice会怎么样去获取Bar的实例呢?这个和其它注解器的规则一样,还是会去使用Bar的默认构造函数,除非Bar的带參数的构造函数也相同使用的@Inject注解。
(三)使用变量字段注解
上面我们已经通过默认构造函数或者使用@Inject注解的带參数构造函数来进行获取了Foo实例。然而我们还能够使用这两种方法结合着来初始化变量。那就是使用Field
injection.
前面几篇文章中我们已经对View空间,资源文件(Resources)的注解方法。如今我们能够在Foo类中加入属性字段的注解来实现.
class Foo {
@Inject Bar bar;
// Roboguice doesn't need a constructor, but you might...
}
上面的代码。当RoboGuice进行创建Foo实例的时候,它会首先创建Bar的实例而且直接注解到以bar命名的字段中。
该和上面的构造函数注入的样例等同。
这样的方法我们的代码会更加简洁。易读可是普通的其它Java对象假设没有使用Roboguice,那么我们会难以使用Foo对象。
假设你使用Field或者Constructor,你能够浏览以下的站点来查看注解的详情信息:
【五】注入框架RoboGuice使用:(Your First POJO Injection)的更多相关文章
- 【三】注入框架RoboGuice使用:(Your First Resource Injection)
上一篇我们简单的介绍了一下RoboGuice的使用([二]注入框架RoboGuice使用:(Your First View Injection)),今天我们来看下资源文件的使用注解的方法: 为了在Ac ...
- 【二】注入框架RoboGuice使用:(Your First View Injection)
上一篇我们简单的介绍了一下RoboGuice的使用([一]注入框架RoboGuice使用:(A brief example of what RoboGuice does)),今天我们我看下View的注 ...
- 【六】注入框架RoboGuice使用:(Singletons And ContextSingletons)
上一篇我们简单的介绍了一下RoboGuice的使用([五]注入框架RoboGuice使用:(Your First POJO Injection)),今天我们来看下单例以及上下文单例(ContextSi ...
- 【四】注入框架RoboGuice使用:(Your First System Service Injection)
上一篇我们简单的介绍了一下RoboGuice的使用([三]注入框架RoboGuice使用:(Your First Resource Injection)),今天我们来看下系统服务的使用注解的方法: 为 ...
- 【十】注入框架RoboGuice使用:(Your First Testcase)
上一篇我们简单的介绍了一下RoboGuice的使用([九]注入框架RoboGuice使用:(Your First Injected Service and BroadcastReceiver)),今天 ...
- 【九】注入框架RoboGuice使用:(Your First Injected Service and BroadcastReceiver)
上一篇我们简单的介绍了一下RoboGuice的使用([八]注入框架RoboGuice使用:(Your First Injected Fragment)),今天我们来看下服务(Service)和广播接受 ...
- 【十一年】注入框架RoboGuice采用:(Your First Injection into a Custom View class)
上一篇我们简单的介绍了一下RoboGuice的使用([十]注入框架RoboGuice使用:(Your First Testcase)),今天我们来看下自己定义View的注入(Custom View). ...
- 【十三】注入框架RoboGuice采用:(Logging via Ln)
上一篇我们简单的介绍了一下RoboGuice的使用([十二]注入框架RoboGuice使用:(Your First Injected ContentProvider)),今天我们来看下Log日志使用. ...
- 【七】注入框架RoboGuice使用:(Your First Custom Binding)
上一篇我们简单的介绍了一下RoboGuice的使用([六]注入框架RoboGuice使用:(Singletons And ContextSingletons)),今天我们来看下自己定义绑定(bindi ...
随机推荐
- 使用protobuf传递网络消息
1.获取protobuf及相关依赖 新建install_protobuf.bat脚本,粘贴以下代码 ::参考文章 https://github.com/google/protobuf/blob/mas ...
- POJ 2553 Tarjan
题意:如果v点能到的所有点反过来又能到v点,则v点是sink点,排序后输出所有的sink点. 思路:Tarjan缩点,输出所有出度为0的连通块内的点. PS:一定要记得把数组清零!!!!!!!否则自己 ...
- java热部署
最近使用java做项目,研究了一下热部署,能够提高工作效率. 需要准备的工具: 1.安装文件http://update.zeroturnaround.com/update-site/ 2.破解 下载破 ...
- javascript 核心概念(1)-数据类型
语法 (1)到现在为止,大多数浏览器也还是支持到ECMAScript 第三版的标准. 核心概念就是一个语言的基本工作原理,涉及语法,操作符,数据类型. (2)javascript的一切--变量,函数名 ...
- 搭建Hadoop所遇过的坑
问题1: 报错信息如下: Container exited with a non-zero exit code 143 Killed by external signal 解决方案: 分配的资源不够, ...
- ★Java语法(四)——————————运算符
使用除法“/” ,要特别注意数据类型的问题.若被除数和除数都是整形,且被除数不能被除数整除时,这时输出的结果为整数,(即整形数/整形数=整形数),这是因为整形变量无法保存小数点后面的数据所致,要特别 ...
- java 练习
class Hello{ public static void main(String [] args) { System.out.println(" Hello 这是我的第一个java作品 ...
- DOM高级编程
前言:W3C规定的三类DOM标准接口(换图)Core DOM(核心DOM),适用于各种结构化文档:XML DOM(Java OOP学过),专用于XML文档:HTML DOM,专用于HTML文档,下面了 ...
- Windows下使用Caffe-Resnet
参考文章: 编译历程参考:CNN:Windows下编译使用Caffe和Caffe2 caffe的VS版本源代码直接保留了sample里面的shell命令,当然这些shell命令在Windows平台下是 ...
- cannot find Toolkit in /usr/local/cuda-8.0
对于新版本ubuntukylin17.04安装CUDA时出现 cannot find Toolkit in /usr/local/cuda-8.0 问题 尝试了各种方法,均不妥当...... 参考:h ...