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

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成人| 永久免费看黄在线观看| 老湿机午夜在线免费观看| 日韩精品一区二区三区四区在线视频 | 丰满人妻被黑人猛烈进入| 最新91精品国产自产在线| 久久精品国产精品亚洲片| 美腿丝袜清纯唯美亚洲另类| 成人爱爱在线视频免费观看| 玩弄丰满熟妇留守妇女| 国产一级三级视频在线| 激情图区亚洲一区二区| 99久在线观看精品视频| 国产亚洲欧美久久精品| 最新日本欧美一区二区| 国产高清av免费在线观看| 人体蜜桃视频一区二区| 亚洲精品日韩av专区| 日本丰满熟女毛茸茸的黑逼| 福利视频免费观看欧美| 九九视频在线观看免费专区| 亚洲精品色在线网站国产呦| 亚洲精品欧美综合二区| 日韩不卡在线免费观看视频| 日韩成人午夜视频在线| 狠狠综合久久av一区二区大宝| 日本在线免费成人高清| 午夜剧场福利在线观看| 精品妇女一区二区三区| 欧美高清在线观看一区二区| 色噜噜色一区二区三区| 中文字幕国产精品经典三级|