上一篇我们简单的介绍了一下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,你能够浏览以下的站点来查看注解的详情信息:

http://code.google.com/p/google-guice/wiki/Injections

【五】注入框架RoboGuice使用:(Your First POJO Injection)的更多相关文章

  1. 【三】注入框架RoboGuice使用:(Your First Resource Injection)

    上一篇我们简单的介绍了一下RoboGuice的使用([二]注入框架RoboGuice使用:(Your First View Injection)),今天我们来看下资源文件的使用注解的方法: 为了在Ac ...

  2. 【二】注入框架RoboGuice使用:(Your First View Injection)

    上一篇我们简单的介绍了一下RoboGuice的使用([一]注入框架RoboGuice使用:(A brief example of what RoboGuice does)),今天我们我看下View的注 ...

  3. 【六】注入框架RoboGuice使用:(Singletons And ContextSingletons)

    上一篇我们简单的介绍了一下RoboGuice的使用([五]注入框架RoboGuice使用:(Your First POJO Injection)),今天我们来看下单例以及上下文单例(ContextSi ...

  4. 【四】注入框架RoboGuice使用:(Your First System Service Injection)

    上一篇我们简单的介绍了一下RoboGuice的使用([三]注入框架RoboGuice使用:(Your First Resource Injection)),今天我们来看下系统服务的使用注解的方法: 为 ...

  5. 【十】注入框架RoboGuice使用:(Your First Testcase)

    上一篇我们简单的介绍了一下RoboGuice的使用([九]注入框架RoboGuice使用:(Your First Injected Service and BroadcastReceiver)),今天 ...

  6. 【九】注入框架RoboGuice使用:(Your First Injected Service and BroadcastReceiver)

    上一篇我们简单的介绍了一下RoboGuice的使用([八]注入框架RoboGuice使用:(Your First Injected Fragment)),今天我们来看下服务(Service)和广播接受 ...

  7. 【十一年】注入框架RoboGuice采用:(Your First Injection into a Custom View class)

    上一篇我们简单的介绍了一下RoboGuice的使用([十]注入框架RoboGuice使用:(Your First Testcase)),今天我们来看下自己定义View的注入(Custom View). ...

  8. 【十三】注入框架RoboGuice采用:(Logging via Ln)

    上一篇我们简单的介绍了一下RoboGuice的使用([十二]注入框架RoboGuice使用:(Your First Injected ContentProvider)),今天我们来看下Log日志使用. ...

  9. 【七】注入框架RoboGuice使用:(Your First Custom Binding)

    上一篇我们简单的介绍了一下RoboGuice的使用([六]注入框架RoboGuice使用:(Singletons And ContextSingletons)),今天我们来看下自己定义绑定(bindi ...

随机推荐

  1. 5.26 Quartz任务调度图解

  2. [hihocoder][Offer收割]编程练习赛50

    循环数组 计算a[i]的前缀和s[i],计算l[i]为1~i-1中最小的s值,r[i]为i~n中最大的s值. 则a[i]~a[n]满足性质的条件为r[i]-s[i-1]>0,a[1]~a[i-1 ...

  3. 如何通过WallpaperManager(壁纸管理器)设置与修改壁纸?

    WallpaperManager(壁纸管理器),是手机壁纸相关的一个API的相关类.其设置壁纸常有如下三种方法可调用: - setBitmap(Bitmap bitmap):将壁纸设置为bitmap所 ...

  4. react基础篇四

    列表 & Keys 渲染多个组件 你可以通过使用{}在JSX内构建一个元素集合 下面,我们使用Javascript中的map()方法遍历numbers数组.对数组中的每个元素返回<li& ...

  5. 初探CORBA组件化编程

    1.掌握组件化开发的概念,了解CORBA模型及ORB机制:2.掌握CORBA组件编程方法.二.实验内容(一).步骤1.配制环境JDK环境.2.编写编译IDL接口.3.编写编译服务端程序.4.编写编译客 ...

  6. mysql修改原始密码

    后期修改数据库用户的密码初始密码为自动生成,我们需要情况原始密码,再修改密码,mysqldmin -u root 只能用在修改为原始密码之后使用systemctl stop mysqldvim /et ...

  7. List分组的两种方式

    java8之前List分组 假设有个student类,有id.name.score属性,list集合中存放所有学生信息,现在要根据学生姓名进行分组. public Map<String, Lis ...

  8. es 存入失败错误

    {, 'error': {'type': 'illegal_argument_exception', 'reason': 'Rejecting mapping update to [bd_date] ...

  9. 深度遍历DFS---树

    一.二叉树的深度 题目: 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,nul ...

  10. php第十一节课

    增删改查 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...