`
zhanglibin1986
  • 浏览: 381560 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android中的注解

    博客分类:
  • Java
阅读更多
package com.cooliris.picasa;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.xml.sax.Attributes;

public abstract class Entry {
    public static final String[] ID_PROJECTION = { "_id" };

    // The primary key of the entry. by_zh
    @Column("_id") //使用
    public long id = 0;

    @Retention(RetentionPolicy.RUNTIME) //使用失效。 注解存在于类文件中,而且在运行时虚拟机可以获取注解信息。 by_zh
    @Target(ElementType.TYPE) //此注解只能用来对类、接口以及枚举类型进行注解 by_zh
    public @interface Table {
        String value();
    }

    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.FIELD) //此注解只能用来对成员变量进行注解
    public @interface Column {
        String value(); //注解属性,value是获取此属性值的方法的名称。

        boolean indexed() default false;

        boolean fullText() default false;
    }

    public void clear() {
        id = 0;
    }

    public void setPropertyFromXml(String uri, String localName, Attributes attrs, String content) {
        throw new UnsupportedOperationException("Entry class does not support XML parsing");
    }
}

private static final class PhotoProjection extends Entry {
        public static final EntrySchema SCHEMA = new EntrySchema(PhotoProjection.class);
        @Column("edit_uri")
        public String editUri;
        @Column("title")
        public String title;
        @Column("summary")
        public String summary;
        @Column("date_taken")
        public long dateTaken;
        @Column("latitude")
        public double latitude;
        @Column("longitude")
        public double longitude;
        @Column("thumbnail_url")
        public String thumbnailUrl;
        @Column("screennail_url")
        public String screennailUrl;
        @Column("content_url")
        public String contentUrl;
        @Column("content_type")
        public String contentType;
        @Column("html_page_url")
        public String htmlPageUrl;
    }


下面是在另一个类中使用注解:
private ColumnInfo[] parseColumnInfo(Class<? extends Object> clazz) {
        // Gather metadata from each annotated field.
        ArrayList<ColumnInfo> columns = new ArrayList<ColumnInfo>();
        Field[] fields = clazz.getFields();
        for (int i = 0; i != fields.length; ++i) {
            // Get column metadata from the annotation.
            Field field = fields[i];
            Entry.Column info = ((AnnotatedElement) field).getAnnotation(Entry.Column.class);
            if (info == null) {
                continue;
            }

            // Determine the field type.
            int type;
            Class<?> fieldType = field.getType();
            if (fieldType == String.class) {
                type = TYPE_STRING;
            } else if (fieldType == boolean.class) {
                type = TYPE_BOOLEAN;
            } else if (fieldType == short.class) {
                type = TYPE_SHORT;
            } else if (fieldType == int.class) {
                type = TYPE_INT;
            } else if (fieldType == long.class) {
                type = TYPE_LONG;
            } else if (fieldType == float.class) {
                type = TYPE_FLOAT;
            } else if (fieldType == double.class) {
                type = TYPE_DOUBLE;
            } else if (fieldType == byte[].class) {
                type = TYPE_BLOB;
            } else {
                throw new IllegalArgumentException("Unsupported field type for column: " + fieldType.getName());
            }

            // Add the column to the array.
            int index = columns.size();
            columns.add(new ColumnInfo(info.value(), type, info.indexed(), info.fullText(), field, index)); //使用注解 by_zh
        }



@Entry.Table("photos")
public final class PhotoEntry extends Entry {
    public static final EntrySchema SCHEMA = new EntrySchema(PhotoEntry.class);

    /**
     * The user account that is the sync source for this entry. Must be set
     * before insert/update.
     */
    @Column("sync_account")
    public String syncAccount;

    /**
     * The "edit" URI of the photo.
     */
    @Column("edit_uri")
    public String editUri;
...
...
}
分享到:
评论

相关推荐

    android&java的注解详解demo

    1. **Android注解库**:如`AndroidAnnotations`,它可以简化Android开发中的常见任务,如启动Activity、保存和恢复状态等。 2. **Lint检查**:`@SuppressLint`注解可以关闭Lint的特定警告,但通常应谨慎使用,因为...

    Android使用注解查找控件

    在Android开发中,注解(Annotation)是一种元数据,它提供了在代码中附加信息的方式,这些信息可以被编译器或者运行时环境用来执行特定的操作。`@Inject`注解通常与依赖注入框架如Dagger或Butter Knife关联,用于...

    android自定义注解实现findview和click

    在Android开发中,自定义注解是一种非常有用的工具,它能帮助我们简化代码,提高可读性和可维护性。本文将深入探讨如何使用自定义注解来实现`findViewById`和`setOnClickListener`的功能,同时支持Activity和...

    Android annotations 注解 使用

    在Android开发中,注解(Annotations)是一种强大的工具,它能帮助我们简化代码,提高代码的可读性和可维护性。Android Annotations库是专门为Android应用设计的一个注解处理框架,它提供了一系列预定义的注解,可以...

    Android通过注解初始化View 工具类

    在Android中,我们可以通过自定义注解来标记特定的UI组件,并在编译时或运行时解析这些注解,执行相应的操作。 1. **创建注解** 我们可以创建一个名为`BindView`的注解,用于标记需要初始化的View。这个注解通常...

    android -仿thinkandroid 注解标签的实现

    在Android开发中,注解(Annotation)是一种强大的元数据,它可以提供有关代码的附加信息,而这些信息可以被编译器或运行时环境用来执行特定的任务。本篇将深入探讨如何仿照ThinkAndroid的方式实现注解标签,以及...

    注解类在android中的使用

    在Android开发中,注解(Annotation)是一种元数据,它提供了在代码中附加信息的方式,这些信息可以被编译器或运行时环境用来执行特定的操作。注解类的使用极大地提高了代码的可读性和可维护性,同时也简化了依赖...

    java注解学习与android中使用

    注解在Android开发中尤其重要,因为它们可以用于简化代码、提高可读性,以及实现编译时和运行时的自动处理。在Android开发中,自定义注解和注解处理器是两个关键概念,让我们深入探讨这两个主题。 首先,我们来看看...

    详解Android注解 Annotation

    本文将深入探讨Android注解的基本概念、种类、使用场景以及处理机制。 一、注解的基本概念 注解本质上是一种特殊的声明,它以`@`符号开头,后面跟着注解类型的名字。注解不会改变程序的语义,它们主要用于提供工具...

    Android自定义注解

    在Android开发中,自定义注解(Custom Annotation)是一种强大的工具,它可以帮助我们简化代码,提高可读性和可维护性。传统的Android应用开发过程中,我们经常需要通过`findViewById`方法来查找并绑定UI元素,这既...

    Android之注解的使用——绑定android控件

    应该都知道XUTILS中有这个控件注解。这边文章的作用是当你想用这个功能而不想用框架中的其他部分时,你可以使用内中方法。 http://blog.csdn.net/yangzhaomuma/article/details/51183110

    android 反射注解框架

    在Android开发中,注解(Annotation)和反射(Reflection)是两种非常强大的工具,它们能够帮助开发者实现更灵活、高效且可维护的代码。本文将深入探讨如何利用这两种技术构建一个简单的Android框架,并阐述其主要...

    Android AOP 注解详解及简单使用实例(三)

    Android AOP 注解是 Android 应用程序开发中的一种重要技术,它可以帮助开发者简化代码、提高效率、降低错误率。本文将详细介绍 Android AOP 注解的概念、原理、分类、使用方法、优点和缺点,以及简单的使用实例。 ...

    深入分析安卓(Android)中的注解

    Android中的注解是一种元数据,用于向编译器或构建工具提供有关代码的附加信息,而这些信息不会改变代码的行为。注解在Java中被广泛使用,而在Android开发中,它们同样扮演着重要的角色,提供了多种优势,例如提高...

    Android自定义注解实现View绑定Demo

    在Android开发中,自定义注解是一种非常有用的工具,它能帮助我们简化代码,提高代码的可读性和可维护性。本示例“Android自定义注解实现View绑定Demo”旨在教你如何通过自定义注解来实现视图的自动绑定,从而避免...

    Android 注解快速入门和实用解析.rar_Android 注解_android

    在Android开发中,注解(Annotation)是一种强大的元数据工具,它允许开发者向代码中添加额外的信息,这些信息可以被编译器或者...通过深入学习和实践,你将能更好地掌握Android注解的精髓,并在实际开发中得心应手。

    android 进阶之注解框架搭建

    在Android开发中,注解(Annotation)是一种强大的元数据机制,可以用来在代码中嵌入信息,这些信息可以在编译时或运行时被处理。本文将深入探讨如何构建一个注解框架,帮助开发者提高代码的可维护性和可扩展性。 ...

    Android-Android中编译时注解实际运行Demo仿照ButterKnife来写的

    在Android开发中,注解(Annotation)是一种强大的元数据,可以为代码添加额外的信息,而这些信息可以在编译时或运行时被解析和利用。ButterKnife是一款著名的Android视图绑定库,它通过注解简化了UI元素的绑定,...

    Android butterknife注解框架

    Android Butter Knife注解框架是一款由Jake Wharton开发的Android库,它极大地简化了视图绑定的过程,让开发者从繁琐的findViewById()调用中解脱出来。这个框架的核心思想是使用Java注解来标识UI元素,然后通过编译...

    Android-注解与反射注解知识点反射知识点注解java反射

    在Android开发中,注解(Annotation)和反射(Reflection)是两个重要的概念,它们极大地提升了代码的可维护性、灵活性和动态性。本篇将详细阐述这两个知识点,并结合实际示例进行讲解。 **注解(Annotation)** 1...

Global site tag (gtag.js) - Google Analytics