﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-For Me Blog</title><link>http://www.blogjava.net/feng0801/</link><description /><language>zh-cn</language><lastBuildDate>Fri, 12 Jun 2026 18:53:02 GMT</lastBuildDate><pubDate>Fri, 12 Jun 2026 18:53:02 GMT</pubDate><ttl>60</ttl><item><title>HttpClient 超时异常含义</title><link>http://www.blogjava.net/feng0801/archive/2018/04/20/433176.html</link><dc:creator>ForMeBlog</dc:creator><author>ForMeBlog</author><pubDate>Fri, 20 Apr 2018 06:36:00 GMT</pubDate><guid>http://www.blogjava.net/feng0801/archive/2018/04/20/433176.html</guid><wfw:comment>http://www.blogjava.net/feng0801/comments/433176.html</wfw:comment><comments>http://www.blogjava.net/feng0801/archive/2018/04/20/433176.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/feng0801/comments/commentRss/433176.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/feng0801/services/trackbacks/433176.html</trackback:ping><description><![CDATA[<div>
<p>关于HTTP请求超时字段定义<br /></p><div>一、ConnectionRequestTimeout 超时</div><div>HttpClient 使用连接池来管理连接，这个时间是从连接池获取连接的超时时间，可以联想从数据库连接池获取数据库连接。</div><div><br />二、ConnectTimeout 超时</div><div>建立连接超时，客户端和服务器间建立连接进行的三次握手完成的时间</div><div><br />三、SocketTimeout 超时</div><div>数据传输过程中数据包之间间隔的最大时间，Http响应报文可能有多个小报文组成，</div><div>如果传输报文的间隔时间超过设置这个时间，会报 java.net.SocketTimeoutException: Read timed out 异常的</div></div><img src ="http://www.blogjava.net/feng0801/aggbug/433176.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/feng0801/" target="_blank">ForMeBlog</a> 2018-04-20 14:36 <a href="http://www.blogjava.net/feng0801/archive/2018/04/20/433176.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse 常用快捷键汇总</title><link>http://www.blogjava.net/feng0801/archive/2015/11/20/428306.html</link><dc:creator>ForMeBlog</dc:creator><author>ForMeBlog</author><pubDate>Fri, 20 Nov 2015 08:36:00 GMT</pubDate><guid>http://www.blogjava.net/feng0801/archive/2015/11/20/428306.html</guid><wfw:comment>http://www.blogjava.net/feng0801/comments/428306.html</wfw:comment><comments>http://www.blogjava.net/feng0801/archive/2015/11/20/428306.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/feng0801/comments/commentRss/428306.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/feng0801/services/trackbacks/428306.html</trackback:ping><description><![CDATA[<div><span style="color: #ff6600;">提示：编写Eclipse常用快捷键写成文档，主要是为了自己熟悉一下这些快捷键，方便以后查找和编程中使用！</span></div>
<div>一、编辑类快捷键</div>
<div>1、Ctrl + 1 快速修复，可以解决很多问题，例如import类、try catch包围等。</div>
<div>2、Ctrl + Shift + F 格式化当前代码。</div>
<div>3、Ctrl + Shift + M 添加类的import引入。</div>
<div>4、Ctrl + Shift + M 组织类的import引入，既有Ctrl + Shift + M 的作用，又可以帮你去除没有用的引入。</div>
<div>5、Ctrl + Y 重做与Ctrl + Z 相反的作用。</div>
<div>6、Alt + / 内容辅助</div>
<div>7、Ctrl + D 删除当前行或者选中的多行</div>
<div>8、Alt + Down 当前行和下面一行交换位置</div>
<div>9、Alt + Up 当前行和上面一行交换位置</div>
<div>10、Shift + Enter 在当前行的下一行插入空行</div>
<div>11、Ctrl + / 注释当前行，再次按则取消注释</div>
<div>二、选择快捷键</div>
<div>1、Alt + Shift + Up 选择封装元素</div>
<div>2、Alt + Shift + Left 选择上一个元素</div>
<div>3、Alt + Shift + Right选择下一个元素</div>
<div>4、Shift + Left 从光标处开始往左选择字符串</div>
<div>5、Shift + Right 从光标处开始往右选择字符串</div>
<div>6、Ctrl + Shift + Left 选中光标左边的单词</div>
<div>7、Ctrl + Shift + Right 选中光标右边的单词</div>
<div>&nbsp;</div>
<div>三、移动快捷键</div>
<div>1、Ctrl + Left 光标移到左边单词的开头，</div>
<div>2、Ctrl + Right 光标移到右边单词的末尾。</div>
<div>&nbsp;</div>
<div>四、搜索快捷键</div>
<div>1、Ctrl + K 参照选中的文字快速定位到下一个，如果没有选中文字则搜索上一次使用搜索的文字。</div>
<div>2、Ctrl + Shift + K 参照选中的文字快速定位到上一个。</div>
<div>3、Ctrl + J 正向增量查找，按下这个快捷键后，你所输入的每个字母编辑器都提供快速匹配到某个单词，如果没有在状态栏中显示没有找到，退出这个模式按ESC键。</div>
<div>4、Ctrl + Shift + J 反向增量查找</div>
<div>5、Ctrl + Shift + U 列出所有包含字符串的行</div>
<div>6、Ctrl + G 工作区中的声明</div>
<div>7、Ctrl + Shift + G 工作区中的引用</div>
<div>&nbsp;</div>
<div>五、导航快捷键</div>
<div>1、Ctrl + Shift + T 搜索类</div>
<div>2、Ctrl + Shift + R 搜索工程中的文件</div>
<div>3、Ctrl + E 快速显示当前编辑区的下拉列表</div>
<div>4、F4 打开类型层次结构</div>
<div>5、F3 跳转到声明处</div>
<div>6、Alt + Left 前一个编辑页面</div>
<div>7、Alt + Right 下一个编辑页面</div>
<div>8、Ctrl + PageUp/PageDown在编辑器中，切换已经打开的文件</div>
<div>&nbsp;</div>
<div>六、调试快捷键</div>
<div>1、F5 单步跳入</div>
<div>2、F6 单步跳过</div>
<div>3、F7 单步还回</div>
<div>4、F8 继续</div>
<div>5、Ctrl + Shift + D 显示变量的值</div>
<div>6、Ctrl + shift + B 在当前行设置或者去掉断点</div>
<div>7、Ctrl + R 运行至行，比较好用可以省好多的断点</div>
<div>&nbsp;</div>
<div>七、重构快捷键</div>
<div>1、Alt + Shift + R 重命名类名、方法名、属性（变量）名。</div>
<div>2、Alt + Shift + M 把一段函数内的代码抽取成方法，这是重构里面最常用的方法之一，特别是对于一大坨代码很有用。</div>
<div>3、Alt + Shift + C 修改函数结构，比较实用有N个函数调用了这个方法修改一次就行了。</div>
<div>4、Alt + Shift + L 抽取本地变量，可以直接把一些魔法数字和字符串抽取成一个变量，尤其是多出调用的时候。</div>
<div>5、Alt + Shift + F 把Class中的局部变量变为全局变量</div>
<div>6、Alt + Shift + I 合并变量，将创建简化</div>
<div>7、Alt + Shift + Z 撤销重构</div>
<div>&nbsp;</div>
<div>八、其他快捷键</div>
<div>1、Alt + Enter 显示当前选择资源的属性，在windows下查看文件的属性就是这个快捷键，通常可以用来查看文件在windows中的实际路径。</div>
<div>2、Ctrl + Up文本编辑器向上滚行</div>
<div>3、Ctrl + Down 文本编辑器向下滚行</div>
<div>4、Ctrl + M 最大化当前的Edit或者View，再按则缩小</div>
<div>5、Ctrl + O 快速显示Outline</div>
<div>6、Ctrl + T 快速显示当前类的继承结构，选中接口方法按下这快捷可以跳转到实现类，在项目DAO中经常用。</div>
<div>7、Ctrl + W 关闭当前Editer</div>
<div>8、Ctrl + L 文本编辑器转至行</div>
<div>9、F2 显示工具提示描述，选择类或者变量按下该键会有提示出来</div><img src ="http://www.blogjava.net/feng0801/aggbug/428306.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/feng0801/" target="_blank">ForMeBlog</a> 2015-11-20 16:36 <a href="http://www.blogjava.net/feng0801/archive/2015/11/20/428306.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为什么要两次调用encodeURI来解决乱码问题</title><link>http://www.blogjava.net/feng0801/archive/2015/08/18/426866.html</link><dc:creator>ForMeBlog</dc:creator><author>ForMeBlog</author><pubDate>Tue, 18 Aug 2015 03:20:00 GMT</pubDate><guid>http://www.blogjava.net/feng0801/archive/2015/08/18/426866.html</guid><wfw:comment>http://www.blogjava.net/feng0801/comments/426866.html</wfw:comment><comments>http://www.blogjava.net/feng0801/archive/2015/08/18/426866.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/feng0801/comments/commentRss/426866.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/feng0801/services/trackbacks/426866.html</trackback:ping><description><![CDATA[<p style="white-space: normal; word-spacing: 0px; text-transform: none; color: rgb(85,85,85); padding-bottom: 0px; padding-top: 0px; font: 15px/35px 'microsoft yahei'; padding-left: 0px; margin: 0px; widows: 1; letter-spacing: normal; padding-right: 0px; background-color: rgb(255,255,255); text-indent: 0px; -webkit-text-stroke-width: 0px"><span style="font-family: 'Courier New'"><span style="font-family: 'Courier New'; background-color: rgb(245,245,245)">今天遇到调用encodeURL调用二次的疑问，虽然之前知道要调用二次，但是具体不是太清楚里面具体的运行过程，这是转载的这个写的比较详细，把整个运行过程详细解读了一下，非常不错所以转载过了供其他人分享。<br />.encodeURL函数主要是来对URI来做转码，它默认是采用的UTF-8的编码.</span><br /><span style="font-family: 'Courier New'; background-color: rgb(245,245,245)">. UTF-8编码的格式:一个汉字来三个字节构成，每一个字节会转换成16进制的编码，同时添加上%号.</span><br /></span></p>
<p style="white-space: normal; word-spacing: 0px; text-transform: none; color: rgb(85,85,85); padding-bottom: 0px; padding-top: 0px; font: 15px/35px 'microsoft yahei'; padding-left: 0px; margin: 0px; widows: 1; letter-spacing: normal; padding-right: 0px; background-color: rgb(255,255,255); text-indent: 0px; -webkit-text-stroke-width: 0px"><span style="font-family: 'Courier New'">假设页面端输入的中文是一个&#8220;中&#8221;，按照下面步骤进行解码</span></p>
<p style="white-space: normal; word-spacing: 0px; text-transform: none; color: rgb(85,85,85); padding-bottom: 0px; padding-top: 0px; font: 15px/35px 'microsoft yahei'; padding-left: 0px; margin: 0px; widows: 1; letter-spacing: normal; padding-right: 0px; background-color: rgb(255,255,255); text-indent: 0px; -webkit-text-stroke-width: 0px"><span style="font-family: 'Courier New'; font-weight: bold; color: rgb(128,0,0)">1</span><span style="font-family: 'Courier New'">.第一次encodeURI，<span style="color: rgb(255,0,255); line-height: 1.5">按照utf</span></span><span style="font-family: 'Courier New'; color: rgb(255,0,255)">-8方式获取字节数组变成[-28,-72-83]，对字节码数组进行遍历，把每个字节转化成对应的16进制数，这样就变成了[E4,B8,AD],最后变成[%E4,%B8,%AD] &nbsp;此时已经没有了多字节字符，全部是单字节字符。</span></p>
<p style="white-space: normal; word-spacing: 0px; text-transform: none; color: rgb(85,85,85); padding-bottom: 0px; padding-top: 0px; font: 15px/35px 'microsoft yahei'; padding-left: 0px; margin: 0px; widows: 1; letter-spacing: normal; padding-right: 0px; background-color: rgb(255,255,255); text-indent: 0px; -webkit-text-stroke-width: 0px"><span style="font-family: 'Courier New'"><span><strong>2、<span style="font-family: 'Courier New'">第二次encodeURI，进行编码，会把%看成一个转义字符，并不编码%以后字符，会把%编码成%25.把数组最后变成</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">[</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">%25E4,%25B8,%25AD</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">]</span><span style="font-family: 'Courier New'">然后就把处理后的数据</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">[</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">%25E4,%25B8,%25AD</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">]</span><span style="font-family: 'Courier New'">发往服务器端，<br />当应用服务器调用getParameter方法，getParameter方法会去向应用服务器请求参数<br />应用服务器最初获得的就是发送来的</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">[</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">%25E4,%25B8,%25AD</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">]</span><span style="font-family: 'Courier New'">，应用服务器会对这个数据进行URLdecode操作，应用服务器进行解码的这一次，不管是按照UTF-8，还是GBK，还是ISO-8859，,都能得到</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">[</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">%E4,%B8,%AD</span><span style="font-family: 'Courier New'; color: rgb(255,0,0)">]</span><span style="font-family: 'Courier New'">，因为都会把%25解析成%.并把这个值返回给getParameter方法</span></strong></span></span></p>
<p style="white-space: normal; word-spacing: 0px; text-transform: none; color: rgb(85,85,85); padding-bottom: 0px; padding-top: 0px; font: 15px/35px 'microsoft yahei'; padding-left: 0px; margin: 0px; widows: 1; letter-spacing: normal; padding-right: 0px; background-color: rgb(255,255,255); text-indent: 0px; -webkit-text-stroke-width: 0px"><span style="font-family: 'Courier New'"><span><strong>3\、再用UTF-8解码一次，就得到"中"了。</strong></span></span></p>
<p style="white-space: normal; word-spacing: 0px; text-transform: none; color: rgb(85,85,85); padding-bottom: 0px; padding-top: 0px; font: 15px/35px 'microsoft yahei'; padding-left: 0px; margin: 0px; widows: 1; letter-spacing: normal; padding-right: 0px; background-color: rgb(255,255,255); text-indent: 0px; -webkit-text-stroke-width: 0px"><span style="font-family: 'Courier New'"><span><strong>想想看，如果不编码两次，当服务器自动解码的时候，假如是按照ISO-8859去解码UTF-8编码的东西，就是会出现乱码。</strong></span></span></p>
<p style="white-space: normal; word-spacing: 0px; text-transform: none; color: rgb(85,85,85); padding-bottom: 0px; padding-top: 0px; font: 15px/35px 'microsoft yahei'; padding-left: 0px; margin: 0px; widows: 1; letter-spacing: normal; padding-right: 0px; background-color: rgb(255,255,255); text-indent: 0px; -webkit-text-stroke-width: 0px">JS:</p>
<div class="dp-highlighter bg_sql" style="overflow: hidden; border-top-color: rgb(204,204,204); width: 938px; white-space: normal; word-spacing: 0px; text-transform: none; border-left-color: rgb(204,204,204); color: rgb(85,85,85); border-bottom-color: rgb(204,204,204); text-align: left; padding-top: 1px; font: 12px/35px Consolas, 'Courier New', Courier, mono, serif; margin: 18px 0px; widows: 1; border-right-color: rgb(204,204,204); letter-spacing: normal; background-color: rgb(231,229,220); text-indent: 0px; -webkit-text-stroke-width: 0px">
<div class="bar" style="padding-left: 45px">
<div class="tools" style="color: silver; padding-bottom: 10px; padding-top: 3px; font: 9px Verdana, Geneva, Arial, Helvetica, sans-serif; padding-left: 10px; border-left: rgb(108,226,108) 3px solid; padding-right: 8px; background-color: rgb(248,248,248); font-stretch: normal"><strong>[sql]</strong><span class="Apple-converted-space">&nbsp;</span><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" title="view plain" class="ViewSource" style="font-size: 9px; text-decoration: none; border-top: medium none; height: 16px; border-right: medium none; width: 16px;background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); background-repeat: no-repeat; border-bottom: medium none; background-position: 0% 0%; color: rgb(12,137,207); padding-bottom: 1px; padding-top: 1px; padding-left: 1px; margin: 0px 10px 0px 0px; border-left: medium none; display: inline-block; padding-right: 1px; text-indent: -2000px; background-size: initial; background-origin: initial; background-clip: initial" href="http://blog.csdn.net/howlaa/article/details/12834595#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" title="copy" class="CopyToClipboard" style="font-size: 9px; text-decoration: none; border-top: medium none; height: 16px; border-right: medium none; width: 16px;background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); background-repeat: no-repeat; border-bottom: medium none; background-position: 0% 0%; color: rgb(12,137,207); padding-bottom: 1px; padding-top: 1px; padding-left: 1px; margin: 0px 10px 0px 0px; border-left: medium none; display: inline-block; padding-right: 1px; text-indent: -2000px; background-size: initial; background-origin: initial; background-clip: initial" href="http://blog.csdn.net/howlaa/article/details/12834595#">copy</a> 
<div style="height: 18px; width: 18px; position: absolute; left: 417px; z-index: 99; top: 833px"><embed id="ZeroClipboardMovie_1" name="ZeroClipboardMovie_1" type="application/x-shockwave-flash" align="center" pluginspage="http://www.macromedia.com/go/getflashplayer" height="18" width="18" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" wmode="transparent" flashvars="id=1&amp;width=18&amp;height=18" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false"></div></div></div>
<ol class="dp-sql" style="list-style-type: decimal; border-top: medium none; border-right: medium none; border-bottom: medium none; color: rgb(92,92,92); padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 0px 1px 45px; border-left: medium none; padding-right: 0px; background-color: rgb(255,255,255)"><li class="alt" style="border-top-style: none; list-style-type: decimal-leading-zero; list-style-position: outside; border-bottom-style: none; color: ; padding-bottom: 0px !important; padding-top: 0px !important; border-right-style: none; padding-left: 10px !important; margin: 0px; border-left: rgb(108,226,108) 3px solid; line-height: 18px; padding-right: 3px !important; background-color: rgb(255,255,255)"><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px"><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">document.authorityForm.</span><span class="keyword" style="border-top: medium none; border-right: medium none; border-bottom: medium none; font-weight: bold; color: rgb(0,102,153); padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">action</span><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">&nbsp;=&nbsp;basePath3+</span><span class="string" style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: blue; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">"User_viewUser.do?id="</span><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">+id+</span><span class="string" style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: blue; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">"&amp;roleName="</span><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">+encodeURI(encodeURI(roleName))+</span><span class="string" style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: blue; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">"&amp;roleType="</span><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">+roleType;&nbsp;&nbsp;</span></span></li></ol></div>
<p style="white-space: normal; word-spacing: 0px; text-transform: none; color: rgb(85,85,85); padding-bottom: 0px; padding-top: 0px; font: 15px/35px 'microsoft yahei'; padding-left: 0px; margin: 0px; widows: 1; letter-spacing: normal; padding-right: 0px; background-color: rgb(255,255,255); text-indent: 0px; -webkit-text-stroke-width: 0px"><br />JAVA后台：<br />&nbsp;&nbsp;&nbsp;</p>
<div class="dp-highlighter bg_sql" style="overflow: hidden; border-top-color: rgb(204,204,204); width: 938px; white-space: normal; word-spacing: 0px; text-transform: none; border-left-color: rgb(204,204,204); color: rgb(85,85,85); border-bottom-color: rgb(204,204,204); text-align: left; padding-top: 1px; font: 12px/35px Consolas, 'Courier New', Courier, mono, serif; margin: 18px 0px; widows: 1; border-right-color: rgb(204,204,204); letter-spacing: normal; background-color: rgb(231,229,220); text-indent: 0px; -webkit-text-stroke-width: 0px">
<div class="bar" style="padding-left: 45px">
<div class="tools" style="color: silver; padding-bottom: 10px; padding-top: 3px; font: 9px Verdana, Geneva, Arial, Helvetica, sans-serif; padding-left: 10px; border-left: rgb(108,226,108) 3px solid; padding-right: 8px; background-color: rgb(248,248,248); font-stretch: normal"><strong>[sql]</strong><span class="Apple-converted-space">&nbsp;</span><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" title="view plain" class="ViewSource" style="font-size: 9px; text-decoration: none; border-top: medium none; height: 16px; border-right: medium none; width: 16px;background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); background-repeat: no-repeat; border-bottom: medium none; background-position: 0% 0%; color: rgb(12,137,207); padding-bottom: 1px; padding-top: 1px; padding-left: 1px; margin: 0px 10px 0px 0px; border-left: medium none; display: inline-block; padding-right: 1px; text-indent: -2000px; background-size: initial; background-origin: initial; background-clip: initial" href="http://blog.csdn.net/howlaa/article/details/12834595#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" title="copy" class="CopyToClipboard" style="font-size: 9px; text-decoration: none; border-top: medium none; height: 16px; border-right: medium none; width: 16px;background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); background-repeat: no-repeat; border-bottom: medium none; background-position: 0% 0%; color: rgb(12,137,207); padding-bottom: 1px; padding-top: 1px; padding-left: 1px; margin: 0px 10px 0px 0px; border-left: medium none; display: inline-block; padding-right: 1px; text-indent: -2000px; background-size: initial; background-origin: initial; background-clip: initial" href="http://blog.csdn.net/howlaa/article/details/12834595#">copy</a> 
<div style="height: 18px; width: 18px; position: absolute; left: 417px; z-index: 99; top: 1043px"><embed id="ZeroClipboardMovie_2" name="ZeroClipboardMovie_2" type="application/x-shockwave-flash" align="center" pluginspage="http://www.macromedia.com/go/getflashplayer" height="18" width="18" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" wmode="transparent" flashvars="id=2&amp;width=18&amp;height=18" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false"></div></div></div>
<ol class="dp-sql" style="list-style-type: decimal; border-top: medium none; border-right: medium none; border-bottom: medium none; color: rgb(92,92,92); padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px 0px 1px 45px; border-left: medium none; padding-right: 0px; background-color: rgb(255,255,255)"><li class="alt" style="border-top-style: none; list-style-type: decimal-leading-zero; list-style-position: outside; border-bottom-style: none; color: ; padding-bottom: 0px !important; padding-top: 0px !important; border-right-style: none; padding-left: 10px !important; margin: 0px; border-left: rgb(108,226,108) 3px solid; line-height: 18px; padding-right: 3px !important; background-color: rgb(255,255,255)"><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px"><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">roleName&nbsp;=&nbsp;java.net.URLDecoder.decode(getRequest().getParameter(</span><span class="string" style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: blue; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">"roleName"</span><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">),</span><span class="string" style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: blue; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">"UTF-8"</span><span style="border-top: medium none; border-right: medium none; border-bottom: medium none; color: black; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: medium none; padding-right: 0px">);&nbsp;&nbsp;</span></span></li></ol></div><img src ="http://www.blogjava.net/feng0801/aggbug/426866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/feng0801/" target="_blank">ForMeBlog</a> 2015-08-18 11:20 <a href="http://www.blogjava.net/feng0801/archive/2015/08/18/426866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java基础之理解Annotation</title><link>http://www.blogjava.net/feng0801/archive/2015/06/11/425636.html</link><dc:creator>ForMeBlog</dc:creator><author>ForMeBlog</author><pubDate>Thu, 11 Jun 2015 10:06:00 GMT</pubDate><guid>http://www.blogjava.net/feng0801/archive/2015/06/11/425636.html</guid><wfw:comment>http://www.blogjava.net/feng0801/comments/425636.html</wfw:comment><comments>http://www.blogjava.net/feng0801/archive/2015/06/11/425636.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/feng0801/comments/commentRss/425636.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/feng0801/services/trackbacks/425636.html</trackback:ping><description><![CDATA[<div id="cnblogs_post_body">
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="color: #0000ff"><strong><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">一</span>、概念</strong></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">　　 Annontation</span>是<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Java5</span>开始引入的新特征。中文名称一般叫注解。它提供了一种安全的类似注释的机制，用来将任何的信息或元数据（<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">metadata</span>）与程序元素（类、方法、成员变量等）进行关联。</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm">　　更通俗的意思是为程序的元素（类、方法、成员变量）加上更直观更明了的说明，这些说明信息是与程序的业务逻辑无关，并且是供指定的工具或框架使用的。<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif"> </span></p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Annontation</span>像一种修饰符一样，应用于包、类型、构造方法、方法、成员变量、参数及本地变量的声明语句中。<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif"> </span></p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="color: #0000ff"><strong><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">二</span>、原理</strong></span></p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">　　Annotation</span>其实是一种接口。通过<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Java</span>的反射机制相关的<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">API</span>来访问<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation</span>信息。相关类（框架或工具中的类）根据这些信息来决定如何使用该程序元素或改变它们的行为。<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif"> </span></p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">　　annotation</span>是不会影响程序代码的执行，无论<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation</span>怎么变化，代码都始终如一地执行。</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">　　Java</span>语言解释器在工作时会忽略这些<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation</span>，因此在<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">JVM </span>中这些<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation</span>是&#8220;不起作用&#8221;的，只能通过配套的工具才能对这些<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annontaion</span>类型的信息进行访问和处理。<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif"> </span></p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="color: #333399"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">　　Annotation</span>与<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">interface</span>的异同</span>：</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">　　　　1</span>）、<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Annotation</span>类型使用关键字<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">@interface</span>而不是<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">interface</span>。</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm">　　这个关键字声明隐含了一个信息：它是继承了<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">java.lang.annotation.Annotation</span>接口，并非声明了一个<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">interface</span></p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">　　　　2</span>）、<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Annotation</span>类型、方法定义是独特的、受限制的。</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">　　Annotation </span>类型的方法必须声明为无参数、无异常抛出的。这些方法定义了<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation</span>的成员：方法名成为了成员名，而方法返回值成为了成员的类型。而方法返回值类型必须为<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">primitive</span>类型、<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Class</span>类型、枚举类型、<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation</span>类型或者由前面类型之一作为元素的一维数组。方法的后面可以使用 <span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">default</span>和一个默认数值来声明成员的默认值，<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">null</span>不能作为成员默认值，这与我们在非<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation</span>类型中定义方法有很大不同。</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">　　Annotation</span>类型和它的方法不能使用<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation</span>类型的参数、成员不能是<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">generic</span>。只有返回值类型是<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Class</span>的方法可以在<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation</span>类型中使用<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">generic</span>，因为此方法能够用类转换将各种类型转换为<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Class</span>。</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">　　　　3</span>）、<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Annotation</span>类型又与接口有着近似之处。</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm">　　它们可以定义常量、静态成员类型（比如枚举类型定义）。<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Annotation</span>类型也可以如接口一般被实现或者继承。</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"></p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><strong><span style="color: #0000ff"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">三</span>、应用场合</span></strong></p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">　　annotation</span>一般作为一种辅助途径，应用在软件框架或工具中，在这些工具类中根据不同的 <span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annontation</span>注解信息采取不同的处理过程或改变相应程序元素（类、方法及成员变量等）的行为。</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm">　　例如：<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Junit</span>、<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Struts</span>、<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Spring</span>等流行工具框架中均广泛使用了<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annontion</span>。使代码的灵活性大提高。</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"></p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><strong><span style="color: #0000ff"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">&nbsp;四</span>、常见标准的<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Annotation</span></span></strong></p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif"></span>　　从<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">java5</span>版本开始，自带了三种标准<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annontation</span>类型<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">,</span></p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif"></span>　　　　（<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">1</span>）、<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Override</span></p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">　　java.lang.Override </span>是一个<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">marker annotation</span>类型，它被用作标注方法。它说明了被标注的方法重载了父类的方法，起到了断言的作用。如果我们使用了这种<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation</span>在一个没有覆盖父类方法的方法时，<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">java</span>编译器将以一个编译错误来警示。</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm">　　这个<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotaton</span>常常在我们试图覆盖父类方法而确又写错了方法名时加一个保障性的校验过程。</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif"></span>　　　　（<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">2</span>）、<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Deprecated</span></p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">　　Deprecated</span>也是一种<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">marker annotation</span>。当一个类型或者类型成员使用<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">@Deprecated</span>修饰的话，编译器将不鼓励使用这个被标注的程序元素。所以使用这种修饰具有一定的 &#8220;延续性&#8221;：如果我们在代码中通过继承或者覆盖的方式使用了这个过时的类型或者成员，虽然继承或者覆盖后的类型或者成员并不是被声明为 <span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">@Deprecated</span>，但编译器仍然要报警。</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm">　　注意：<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">@Deprecated</span>这个<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation</span>类型和<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">javadoc</span>中的 <span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">@deprecated</span>这个<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">tag</span>是有区别的：前者是<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">java</span>编译器识别的，而后者是被<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">javadoc</span>工具所识别用来生成文档（包含程序成员为什么已经过时、它应当如何被禁止或者替代的描述）。</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif"></span>　　　　（<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">3</span>）、<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">SuppressWarnings</span></p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif"></span>　　此注解能告诉<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Java</span>编译器关闭对类、方法及成员变量的警告。</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif"></span>　　有时编译时会提出一些警告，对于这些警告有的隐藏着<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">Bug</span>，有的是无法避免的，对于某些不想看到的警告信息，可以通过这个注解来屏蔽。</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">　　SuppressWarning</span>不是一个<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">marker annotation</span>。它有一个类型为<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">String[]</span>的成员，这个成员的值为被禁止的警告名。对于<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">javac</span>编译器来讲，被<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">-Xlint</span>选项有效的警告名也同样对<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">@SuppressWarings</span>有效，同时编译器忽略掉无法识别的警告名。</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">　　annotation</span>语法允许在<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation</span>名后跟括号，括号中是使用逗号分割的<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">name=value</span>对用于为<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation</span>的成员赋值：</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif"></span>代码：</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><pre><span style="color: #000000">@SuppressWarnings(value</span><span style="color: #000000">=</span><span style="color: #000000">{</span><span style="color: #000000">"</span><span style="color: #000000">unchecked</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">fallthrough</span><span style="color: #000000">"</span><span style="color: #000000">})<br /><br /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> lintTrap() { </span><span style="color: #008000">/*</span><span style="color: #008000"> sloppy method body omitted </span><span style="color: #008000">*/</span><span style="color: #000000"> }</span></pre></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm">在这个例子中<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">SuppressWarnings annotation</span>类型只定义了一个单一的成员，所以只有一个简单的<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">value={...}</span>作为<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">name=value</span>对。又由于成员值是一个数组，故使用大括号来声明数组值。</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"></p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm">注意：我们可以在下面的情况中缩写<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation</span>：当<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annotation</span>只有单一成员，并成员命名为<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">"value="</span>。这时可以省去<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">"value="</span>。比如将上面的<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">SuppressWarnings annotation</span>进行缩写：</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm">代码：</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><pre><span style="color: #000000">@SuppressWarnings({</span><span style="color: #000000">"</span><span style="color: #000000">unchecked</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">fallthrough</span><span style="color: #000000">"</span><span style="color: #000000">})</span></pre></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm">如果<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">SuppressWarnings</span>所声明的被禁止警告个数为一个时，可以省去大括号：</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"></p>
<div class="cnblogs_code"><pre><span style="color: #000000">@SuppressWarnings(</span><span style="color: #000000">"</span><span style="color: #000000">unchecked</span><span style="color: #000000">"</span><span style="color: #000000">)</span></pre></div>
<p style="margin-bottom: 0cm"></p>
<p style="margin-bottom: 0cm"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"></p>
<p>&nbsp;</p>
<p style="margin-bottom: 0cm"><strong><span style="color: #0000ff"><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">五</span>、自定义<span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif">annontation</span>示例</span></strong><span style="font-family: DejaVu Serif, serif" face="DejaVu Serif, serif"> <