Android中的注解


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;
...
...
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值