欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Java注解處理器學(xué)習(xí)之編譯時(shí)處理的注解詳析-創(chuàng)新互聯(lián)

1. 一些基本概念

創(chuàng)新互聯(lián)公司制作網(wǎng)站網(wǎng)頁找三站合一網(wǎng)站制作公司,專注于網(wǎng)頁設(shè)計(jì),網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè),網(wǎng)站設(shè)計(jì),企業(yè)網(wǎng)站搭建,網(wǎng)站開發(fā),建網(wǎng)站業(yè)務(wù),680元做網(wǎng)站,已為近1000家服務(wù),創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)將一如既往的為我們的客戶提供最優(yōu)質(zhì)的網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷推廣服務(wù)!

在開始之前,我們需要聲明一件重要的事情是:我們不是在討論在運(yùn)行時(shí)通過反射機(jī)制運(yùn)行處理的注解,而是在討論在編譯時(shí)處理的注解。


編譯時(shí)注解跟運(yùn)行時(shí)注解到底區(qū)別在什么地方?其實(shí)說大也不大,主要是考慮到性能上面的問題。運(yùn)行時(shí)注解主要是完全依賴于反射,反射的效率比原生的慢,所以在內(nèi)存比較少,CPU比較爛的機(jī)器上會(huì)有一些卡頓現(xiàn)象出現(xiàn)。而編譯時(shí)注解完全不會(huì)有這個(gè)問題,因?yàn)樗谖覀兙幾g過程(java->class)中,通過一些注解標(biāo)示,去動(dòng)態(tài)生成一些類或者文件,所以跟我們的APK運(yùn)行完全沒有任何關(guān)系,自然就不存在性能上的問題。所以一般比較著名的開源項(xiàng)目如果采用注解功能,通常采用編譯時(shí)注解

注解處理器是 javac 自帶的一個(gè)工具,用來在編譯時(shí)期掃描處理注解信息。你可以為某些注解注冊自己的注解處理器。這里,我假設(shè)你已經(jīng)了解什么是注解及如何自定義注解。如果你還未了解注解的話,可以查看官方文檔。注解處理器在 Java 5 的時(shí)候就已經(jīng)存在了,但直到 Java 6 (發(fā)布于2006看十二月)的時(shí)候才有可用的API。過了一段時(shí)間java的使用者們才意識到注解處理器的強(qiáng)大。所以最近幾年它才開始流行。


一個(gè)特定注解的處理器以 java 源代碼(或者已編譯的字節(jié)碼)作為輸入,然后生成一些文件(通常是.java文件)作為輸出。那意味著什么呢?你可以生成 java 代碼!這些 java 代碼在生成的.java文件中。因此你不能改變已經(jīng)存在的java類,例如添加一個(gè)方法。這些生成的 java 文件跟其他手動(dòng)編寫的 java 源代碼一樣,將會(huì)被 javac 編譯。

Annotation processing是在編譯階段執(zhí)行的,它的原理就是讀入Java源代碼,解析注解,然后生成新的Java代碼。新生成的Java代碼最后被編譯成Java字節(jié)碼,注解解析器(Annotation Processor)不能改變讀入的Java 類,比如不能加入或刪除Java方法。

2. AbstractProcessor

讓我們來看一下處理器的 API。所有的處理器都繼承了AbstractProcessor,如下所示:

package com.example;
import java.util.LinkedHashSet;
import java.util.Set;
import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.ProcessingEnvironment;
import javax.annotation.processing.RoundEnvironment;
import javax.annotation.processing.SupportedAnnotationTypes;
import javax.annotation.processing.SupportedSourceVersion;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.TypeElement;

public class MyProcessor extends AbstractProcessor {

 @Override
 public boolean process(Set<? extends TypeElement> annoations,
  RoundEnvironment env) {
 return false;
 }

 @Override
 public Set<String> getSupportedAnnotationTypes() {
 Set<String> annotataions = new LinkedHashSet<String>();
 annotataions.add("com.example.MyAnnotation");
 return annotataions;
 }

 @Override
 public SourceVersion getSupportedSourceVersion() {
 return SourceVersion.latestSupported();
 }

 @Override
 public synchronized void init(ProcessingEnvironment processingEnv) {
 super.init(processingEnv);
 }
}

分享文章:Java注解處理器學(xué)習(xí)之編譯時(shí)處理的注解詳析-創(chuàng)新互聯(lián)
鏈接分享:http://aaarwkj.com/article26/gdgjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、網(wǎng)站收錄、商城網(wǎng)站微信公眾號、網(wǎng)頁設(shè)計(jì)公司營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
高清av中文免费在线| 国产性做爰片免费视频| 亚洲精品中文一区二区三区| 国产麻豆精品免费喷白浆视频网站| 五月综合丁香婷婷久久| 激情五月,开心五月深情五月| 日韩美女毛片啪啪响| 日本韩国视频一区二区| 亚洲一区二区三区香蕉不卡| 97人妻精品一区二区三区六| 蜜桃精品一区二区三区在线观看 | 国产精品推荐在线观看| 黄色录像黄色片黄色片| 日韩精品二区在线观看| 精品久久一区麻豆香蕉| 日韩国产精品激情一区| 亚洲女同中文字幕在线| 亚洲一区二区三区国色天香| 欧美亚洲午夜精品久久久| 黄色午夜福利在线观看| 可以免费看黄的网久久| 亚洲天堂福利视频网站| 日本精品在线小视频| 不卡的国产在线视频| 九九热这里面只有精品| 亚洲国产日本一区自拍| 四虎最新地址在线观看| 九九免费在线视频观看| 日本大胆高清人体艺术| 人妻猛烈进入中文字幕| 黄色18禁网站在线看| 麻豆一精品传二传媒短视频 | 日韩欧美在线一区二区| 午夜在线精品福利视频| 中文字幕人妻出轨一区二区| 日韩一区二区三区免费播放| 亚洲av无毛在线观看| 日本亚洲美丽少妇天堂| 一区二区中文字幕日本韩国| 亚洲国产传媒在线观看| 久久久久亚洲av成人|