@DeclarationNumber(0) 是啥意思?

雨雪飘零 2009-02-03 01:54:28
@SuppressWarnings("serial")
public class BBTB_F_Tb13DocClass_validateDocClassAvailableIn extends InParam implements java.io.Serializable {

/** 文書分類年度 */
@DeclarationNumber(0)
private String docClassFy;
/** 文書分類コード */
@DeclarationNumber(1)
private String docClassCd;

}
...全文
186 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gya_xiner 2010-07-21
  • 打赏
  • 举报
回复
9L,你那是什么书?请介绍一下!!
Rain208 2009-04-22
  • 打赏
  • 举报
回复
Annotation(注释)是J2SE 5.0引入的新功能,它被定义为JSR-175规范。简单地说,它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。本文只会介绍注释的基本概念,以及Java内置注释的使用方法;关于定制注释及其他高级主题将在下一篇文章中讲解。


正文

编程的一个最新的趋势,尤其是在Java编程方面,就是使用元数据。直到JSR-175 提案的通过,并在J2SE 5.0上实现,你才有了使用注释的机会,在不断的发展和演进中,基于JSR-181的元数据批注标准,能让我们更轻松的开发和部署Web Service了,不需要被大量的配置文件所烦恼,说得有点远了,转回整体,元数据是可以添加到代码中的修饰符,它可以用于包声明、类型声明、构造函数、方法、字段、参数和变量。J2SE包含内置注释,还支持你自己编写的定制注释。


内容

l 注释基本知识

l 元数据的作用

l 基本内置注释

l 概要


注释基础知识

在J2SE 5.0中,注释是以‘@注释名’在代码中存在的,例如:J2SE 5.0内置的注释:@Override、@Deprecated;有的注释还可以添加一些参数值,例如:@SuppressWarnings(value="unchecked");对于这种只有一个参数,且参数名为value的注释,我们在使用时可以简写为:@SuppressWarnings("unchecked")。


根据注释参数的个数,我们可以将注释分为:标记注释、单值注释、完整注释三类。它们都不会直接影响到程序的语义,只是作为注释(标识)存在,我们可以通过反射机制编程实现对这些元数据的访问。另外,你可以在编译时选择代码里的注释是否只存在于源代码级,或者它也能在class文件中出现。


元数据的作用

如果要对于元数据的作用进行分类,目前还没有明确的定义,不过我们可以根据它所起的作用,大致可分为三类:

l 编写文档:通过代码里标识的元数据生成文档。

l 代码分析:通过代码里标识的元数据对代码进行分析。

l 编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查。


基本内置注释

@Override注释能实现编译时检查,你可以为你的方法添加该注释,以声明该方法是用于覆盖父类中的方法。如果该方法不是覆盖父类的方法,将会在编译时报错。例如我们为某类重写toString()方法却写成了tostring(),并且我们为该方法添加了@Override注释;代码如下:


package com.gelc.annotation.demo.basic;


public class OverrideDemo {


// @Override

public String tostring() {


return super.toString();

}

}

在编译时,则会提示以下错误信息:

OverrideTest.java:5: 方法未覆盖其父类的方法

@Override

^

1 错误


就像示例演示的那样,该注释一大好处就是可以在编译时帮我们捕获部分编译错误,但又有多少编程人员愿意为每个覆盖父类的方法添加该注释呢?这个只有靠编程人员自己进行取舍了。


@Deprecated的作用是对不应该在使用的方法添加注释,当编程人员使用这些方法时,将会在编译时显示提示信息,它与javadoc里的@deprecated标记有相同的功能,准确的说,它还不如javadoc @deprecated,因为它不支持参数,使用@Deprecated的示例代码示例如下:

package com.gelc.annotation.demo.basic;


public class DeprecatedDemo {


public static void main(String[] args) {


// DeprecatedClass.DeprecatedMethod();

}

}


class DeprecatedClass {


@Deprecated

public static void DeprecatedMethod() {

// TODO

}

}

编译时,会得到以下提示:

注意:DeprecatedDemo.java 使用或覆盖了已过时的 API。

注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。


如果在编译时添加-Xlint:deprecation参数,我们能更清楚的看到该警告的详细信息,如下:

DeprecatedDemo.java:6: 警告:[deprecation] SomeClass 中的 DeprecatedMethod() 已

过时

SomeClass.DeprecatedMethod();

^

1 警告


通过上面的示例,你已经掌握到了如何使用@Deprecated,但你理解到@Deprecated与@deprecated的区别了吗?你可以简单的理解为:@Deprecated是为了编译时检查,而@deprecated是为了生成文档的需要,各尽其责。


@SuppressWarnings与前两个注释有所不同,你需要添加一个参数才能正确使用,这些参数值都是已经定义好了的,我们选择性的使用就好了,参数如下:




参数
语义

deprecation
使用了过时的类或方法时的警告

unchecked
执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型

fallthrough
当 Switch 程序块直接通往下一种情况而没有 Break 时的警告

path
在类路径、源文件路径等中有不存在的路径时的警告

serial
当在可序列化的类上缺少 serialVersionUID 定义时的警告

finally
任何 finally 子句不能正常完成时的警告

all
关于以上所有情况的警告



通过上面的表格,你应该了解到每个参数的用意了,下面我就以一个常用的参数unchecked为例,为你展示如何使用@SuppressWarnings注释,示例代码如下:


package com.gelc.annotation.demo.basic;


import java.util.List;

import java.util.ArrayList;


public class SuppressWarningsDemo {


public static List cache = new ArrayList();


// @SuppressWarnings(value = "unchecked")

public void add(String data) {


cache.add(data);

}

}

当我们不使用@SuppressWarnings注释时,编译器就会有如下提示:

注意:SuppressWarningsDemo.java 使用了未经检查或不安全的操作。

注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。


相信你对这个提示相当熟悉了,我就不在这里多说了。下面我们还是来试试使用了@SuppressWarnings(value="unchecked")注释会是什么效果,它会屏蔽编译时的警告信息,这也就是它所要达到的目的。另外,由于@SuppressWarnings注释只有一个参数,并且参数名为value,所以我们可以将上面一句注释简写为@SuppressWarnings("unchecked")。


概要

在J2SE 5.0出现三个多年头后的今天,再回头看看它当时引入的这一新特性,虽然它已不是什么新概念了,还是值得我们再次回味的,下面文章中将介绍编程人员如何定制注释。
gongyali2005 2009-02-03
  • 打赏
  • 举报
回复
Annotation
wclszh 2009-02-03
  • 打赏
  • 举报
回复
对于注释的理解不是很多,但是自定义注释的写法很简单。用法也很简单,上网查一下吧http://www.ibm.com/developerworks/cn/java/j-tiger-eclispe2/
wclszh 2009-02-03
  • 打赏
  • 举报
回复
应该是自定义的注释
jian198001 2009-02-03
  • 打赏
  • 举报
回复
你可以把DeclarationNumber这个类的类声明发上来,我们有可能根据类声明帮你看看到底是什么意思啊
gannbatte 2009-02-03
  • 打赏
  • 举报
回复
是自定义的,和我们做的时候要求的一样。。。奶奶的小日本。。。
例子
/** 画面ID */
@HiddenSupport
public String pageId;
kevin-yy 2009-02-03
  • 打赏
  • 举报
回复
自定义的Annotation,看看import处导入的哪个类
HinanaiTenshi 2009-02-03
  • 打赏
  • 举报
回复
应该是自定义的吧,你不知道我们就更不知道了=_=" ||
基于强化学习的五子棋强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一。它主要用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。强化学习的特点在于没有监督数据,只有奖励信号。 强化学习的常见模型是标准的马尔可夫决策过程(Markov Decision Process, MDP)。按给定条件,强化学习可分为基于模式的强化学习(model-based RL)和无模式强化学习(model-free RL),以及主动强化学习(active RL)和被动强化学习(passive RL)。强化学习的变体包括逆向强化学习、阶层强化学习和部分可观测系统的强化学习。求解强化学习问题所使用的算法可分为策略搜索算法和值函数(value function)算法两类。 强化学习理论受到行为主义心理学启发,侧重在线学习并试图在探索-利用(exploration-exploitation)间保持平衡。不同于监督学习和非监督学习,强化学习不要求预先给定任何数据,而是通过接收环境对动作的奖励(反馈)获得学习信息并更新模型参数。强化学习问题在信息论、博弈论、自动控制等领域有得到讨论,被用于解释有限理性条件下的平衡态、设计推荐系统和机器人交互系统。一些复杂的强化学习算法在一定程度上具备解决复杂问题的通用智能,可以在围棋和电子游戏中达到人类水平。 强化学习在工程领域的应用也相当广泛。例如,Facebook提出了开源强化学习平台Horizon,该平台利用强化学习来优化大规模生产系统。在医疗保健领域,RL系统能够为患者提供治疗策略,该系统能够利用以往的经验找到最优的策略,而无需生物系统的数学模型等先验信息,这使得基于RL的系统具有更广泛的适用性。 总的来说,强化学习是一种通过智能体与环境交互,以最大化累积奖励为目标的学习过程。它在许多领域都展现出了强大的应用潜力。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧