java 注解设置注解属性
ja v a注解设置注解属性
设置注解的属性
实例
定义
使?
个?遇到的使?场景
场景导?
实例
代码地址
引?
设置注解的属性
这种使?场景?较少,但是不失为?种对于注解的深?理解。
实例
定义
Tag.java
1import https://www.360docs.net/doc/e37498483.html,ng.annotation.ElementType;
2import https://www.360docs.net/doc/e37498483.html,ng.annotation.Retention;
3import https://www.360docs.net/doc/e37498483.html,ng.annotation.RetentionPolicy;
4import https://www.360docs.net/doc/e37498483.html,ng.annotation.Target;
5
6@Retention(RetentionPolicy.RUNTIME)
7@Target({ElementType.TYPE, ElementType.METHOD, ElementType.LOCAL_VAR IABLE})
8public@interface Tag {
9
10/**
11* tag 标签
12*
13* @return tag
14*/
15String value() default"";
16
17}
使?
SetValue.java
设置注解的属性
1import com.ryo.jdk.annotation.define.Tag;
2
3import org.junit.Assert;
4
5import https://www.360docs.net/doc/e37498483.html,ng.reflect.Field;
6import https://www.360docs.net/doc/e37498483.html,ng.reflect.InvocationHandler;
7import https://www.360docs.net/doc/e37498483.html,ng.reflect.Method;
8import https://www.360docs.net/doc/e37498483.html,ng.reflect.Proxy;
9import java.util.Map;
10
11public class SetValue {
12
13/**
14* 在每?个类执?之前,设置注解的属性
15* @throws NoSuchFieldException if any
16* @throws IllegalAccessException if any
17*/
18@SuppressWarnings("unchecked")
19public static void beforeClass() throws NoSuchFieldException, Il legalAccessException {
20 Method[] methods = SetValue.class.getDeclaredMethods();
21for(Method method : methods) {
22 Tag tag = method.getAnnotation(Tag.class);
23if(tag !=null) {
24 InvocationHandler h = Proxy.getInvocationHandler(tag
);
25 Field hField = h.getClass().getDeclaredField("member
Values");
26 hField.setAccessible(true);
27 Map memberMethods = (Map) hField.get(h);
28 memberMethods.put("value", "setAnnotation");
29String value = tag.value();
30 Assert.assertEquals("setAnnotation", value);
31 }
32 }
33 }
34
35@Tag
36public void tag() {
37 }
38
39public static void main(String[] args) throws NoSuchFieldExcepti on, IllegalAccessException {
40 beforeClass();
41 }
42}
个?遇到的使?场景
场景导?
TestNG 中的@DataProvider注解,拥有 dataProvider() 属性?来指定数据源。
编写的框架中 dataProvider() 值可以指向固定的值,但是 TestNG 会通过这个属性来进?值的注?和执?。
@DataProvider 的属性
编写的框架通过注解去解析对应的配置?件,导致所有的 @DataProvider 的 dataProvider() 可以使固定的。
但是 TestNG 通过判断 dataProvider() 是否有值,来进?参数化测试。
所以,这是?个固定的属性值,使?同?的属性设置,可以使得?户代码变得更加优雅。
实例
TestNgDataProviderTest.java
1import org.testng.Assert;
2import org.testng.ITestContext;
3import org.testng.annotations.BeforeClass;
4import org.testng.annotations.DataProvider;
5import org.testng.annotations.Test;
6
7import https://www.360docs.net/doc/e37498483.html,ng.reflect.Field;
8import https://www.360docs.net/doc/e37498483.html,ng.reflect.InvocationHandler;
9import https://www.360docs.net/doc/e37498483.html,ng.reflect.Method;
10import https://www.360docs.net/doc/e37498483.html,ng.reflect.Proxy;
11import java.util.Map;
12
13public class TestNgDataProviderTest {
14
15/**
16* 是否为空数据准备
17* @return 数据
18*/
19@DataProvider(name ="TestDataProvider")
20public Object[][] isEmptyDataProvider(Method method, ITestContex t testContext) {
21return new Object[][]{
22 {"", true},
23 {null, true},
24 {" ", true},
25 {"1", false},
26 {" 1", false}
27 };
28 }
29
30/**
31* 在每?个类执?之前,设置注解的属性
32* @throws NoSuchFieldException if any
33* @throws IllegalAccessException if any
34*/
35@BeforeClass
36public void beforeClass() throws NoSuchFieldException, IllegalAc cessException {
37 Method[] methods =this.getClass().getDeclaredMethods();
38for(Method method : methods) {
39 Test test = method.getAnnotation(Test.class);
40if(test !=null) {
41 InvocationHandler h = Proxy.getInvocationHandler(tes
t);
42 Field hField = h.getClass().getDeclaredField("member
Values");
43 hField.setAccessible(true);
44 Map memberMethods = (Map) hField.get(h);
45 memberMethods.put("dataProvider", "TestDataProvider"
);
46String value = test.dataProvider();
47 Assert.assertEquals("TestDataProvider", value);
48 }
49 }
50 }
51
52@Test
53public void isEmptyTest(final String string, boolean result) {
54 System.out.println(string+","+result);
55 Assert.assertEquals(result, StringUtil.isEmpty(string));
56 }
57}
代码地址
通过反射,动态修改注解的某个属性值annotation 定义与解析
引?
webservice注解详解
webservice注解详解
javax.jws.WebService 当实现Web Service 时,@WebService 注释标记Java 类;实现Web Service 接口时,标记服务端点接口(SEI)。 要点: ? 实现Web Service 的Java 类必须指定@WebService 或@WebServiceProvider 注释。不能同时提供这两种注释。 此注释适用于客户机/服务器SEI 或JavaBeans 端点的服务器端点实现类。 ? 如果注释通过endpointInterface属性引用了某个SEI,那么还必须使用@WebService 注释来注释该SEI。 ? 请参阅适用于使用@WebService 注释的类的方法的规则,以了解更多信息 ?注释目标:类型 ?属性: - name wsdl:portType的名称。缺省值为Java 类或接口的非限定名称。(字符串)- targetNamespace 指定从Web Service 生成的WSDL 和XML 元素的XML 名称空间。缺省值为从包含该Web Service 的包名映射的名称空间。(字符串) - serviceName 指定Web Service 的服务名称:wsdl:service。缺省值为Java 类的简单名称 + Service。(字符串) - endpointInterface 指定用于定义服务的抽象Web Service 约定的服务端点接口的限定名。如果指定了此限定名,那么会使用该服务端点接口来确定抽象WSDL 约定。(字符串)- portName wsdl:portName。缺省值为https://www.360docs.net/doc/e37498483.html,+Port。(字符串)
Java注解
注解 可以先把注解当成注释来看,注释就是给类的各个组成部分(包、类名、构造器、属性、方法、方法参数,以及局部变量)添加一些解释。 可以先不去管注解是用来干什么的,就把它当成注释来看。注解的格式当然不能与注释相同,注解是需要声明的,声明注解与声明一个接口有些相似。当然Java也有一些内置注解,例如:@Override就是内置注解。 1声明注解 声明注解与声明一个接口相似,它需要使用@interface。一个注解默认为Annotation的 注解还可以带有成员,没有成员的注解叫做标记注解。成员的类型只能是基本类型、枚举类型)、String、基本类型数组、String[],以及注解和注解数组类型。 其中String表示成员的类型,value()表示成员名称。其中圆括号不能没有,也不能在圆
括号内放参数,它不是一个方法,只是一个成员变量。 注解可以有多个成员,但如果只有一个成员,那么成员名必须为value。这时在设置成
Java还提供了一些元注解,用来控制注解,例如@Retention和@Target: ●@Target:ElementType类型(枚举类型),表示当前注解可以标记什么东西,可选 值为: TYPE:可以标记类、接口、注解类、Enum。 FIELD:可以标记属性。 METHOD:可以标记就去。 PARAMETER:可以标记参数。 CONSTRUCTOR:可以标记构造器。 LOCAL_VARIABLE:可以标记局部变量。 ANNOTATION_TYPE:可以标记注解类声明。
PACKAGE:可以标记包。 ●@Retention:RetentionPolicy类型(枚举类型),表示注解的可保留期限。可选值为: SOURCE:只在源代码中存在,编译后的字节码文件中不保留注解信息。 CLASS:保留到字节码文件中,但类加载器不会加载注解信息到JVM。 RUNTIME:保留到字节码文件中,并在目标类被类加载器加载时,同时加载注解信息到JVM,可以通过反射来获取注解信息。 2访问注解 很多第三方程序或工具都使用了注解完成特殊的任务,例如Spring、Struts等。它们都提供了自己的注解类库。在程序运行时使用反射来获取注解信息。下面我们来使用反射来获取注解信息。
JAVA简单项目购物系统的整个开发过程详解(内含源码和注释)
1. 购物系统的需求分析和类划分 购物系统本身是一个十分复杂的系统,有很多细节问题如果深究会更加复杂,并且一般购物系统都是网页类型的,要有一个友好的界面,但是作为一个简单项目,该项目只是为了给JAVA初学者介绍一下开发的基本思想,以及面向对象时应该怎样去设计框架和实现流程,所以只
是基于eclipse开发的一个简单的项目,并没有GUI的参与,并且很多细节问题作为后续研究,整体的设计比较简单,但是足以说明很多设计思想和设计理念,那么下面对基本的需求进行分析。 作为一个简单的购物系统,至少需要具备以下功能(这些功能分布在不同级的菜单中): (1)用户登录功能、用户账号密码修改功能,暂时不提供注册功能; (2)用户成功登录后,需要具备客户信息的管理功能、购物结算功能以及一些抽奖活动等; (3)客户信息管理功能下面又可以分出很多功能,比如说:查询、修改、增加等; (4)购物结算功能下面又可以分出很多功能,比如说:商品选购、付款、账单等; (5)抽奖活动下面又可以设计出多种的抽奖形式,从而进一步划分为许多新的功能模块。 (6)在一级菜单中要提供退出系统的功能,在二级菜单中要提供注销登录的功能,其他级菜单都要能够返回上一级菜单。 上面的这些功能都是一些比较基本的功能,那么如果按照面向流程的思想来设计,就会划分很多功能模块,然后按照流程一步步走就行,但是现在我们采用面向对象的思想来设计,那么应该如何考虑设计框架呢?面向对象的主要思想就是将一些需求抽象为许多类,然后建立这些
类之间的联系,通过不同类之间的协同合作,就可以实现所有的功能。所以,现在的主要任务就是如何合理地抽象出这些类,以及这些类要实现什么功能,类之间的联系又是什么?下面通过本次设计的结构对这一过程进行分析。 (1)StartSMS类:用于系统的启动。我们的系统肯定需要一个启动类,这个类里面包含了main方法,用来启动这个系统,这个类是最顶层的,所以不能牵涉太多底层的细节实现,只需要实现一些顶层的基本流程就行,主要还是要调用底层其他类的一些方法来实现功能。 (2)Data类:用来存放我们的所有数据信息,本次设计主要存放的是已经预存的一些可供购买的商品信息和已经注册的会员信息。为什么需要这个类呢?大家想一想,在面向对象的设计中,我们的数据比较多,肯定不能零散地到处定义、任意修改,这样会使得系统的聚合程度太低,容易出现很多错误,并且难以进行后期功能扩展和错误修改,所以我们要把用到的一些公有的数据进行归类,然后放在一个类中,并且在该类中提供对这些数据进行操作的方法。 (3)Menu类:用于显示及处理各级菜单。既然我们设计的是一个购物系统,那么即使再简单,也需要一个基本的菜单,用来和用户进行交互,由于菜单的比较多,并且各级菜单之间层层相连,所以我们需要对菜单进行统一管理,故而出现了菜单类。注意,这里的菜单只是一些顶层的菜单显示和基本的功能调用,具体底层的算法还是需要更加底层的类来实现的。
MyEclipse设置Java代码注释模板
设置注释模板的入口:Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是所有需设置注释的元素啦。现就每一个元素逐一介绍: 文件(Files)注释标签: /** * @Title: ${file_name} * @Package ${package_name} * @Description: ${todo} * @author chenguang * @date ${date} ${time} * @version V1.0 */ 类型(Types)注释标签(类的注释): /** * 类功能说明 * 类修改者修改日期 * 修改说明 * Title: ${file_name} * Description:清大海辉科技开发平台 * Copyright: Copyright (c) 2006 * Company:北京清大海辉科技有限公司 * @author ${user} * @date ${date} ${time} * @version V1.0 */ 字段(Fields)注释标签: /** * @Fields ${field} : ${todo} */ 构造函数标签: /** * Title: * Description: * ${tags} */
方法(Constructor & Methods)标签: /** * 函数功能说明 * ${user} ${date} * 修改者名字修改日期 * 修改内容 * @param ${tags} * @return ${return_type} * @throws */ getter方法标签: /** * @return ${bare_field_name} */ setter方法标签: /** * @param ${param} ${bare_field_name} */ 加注释快捷键:选中你要加注释的方法或类,按Alt + shift + J。
JAVA注解
JAVA注解 1、什么是注解 从JDK5开始提供名为Annotation(注释)的功能,它被定义为JSR-175规范。注释是以“@注释名”在代码中存在的,还可以添加一些参数值,例如:@SuppressWarnings(value="unchecked")。注释可以附加在package, class, method, field 等上面,相当于给它们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问。如果没有外部解析工具等对其加以解析和处理的情况,本身不会对Java的源代码或class文件等产生任何影响,也不会对它们的执行产生任何影响。 2、JDK5内置的基本注释 JDK5内置了一些常用的注释,可以在编译时帮我们捕获部分编译错误,及提示信息,下面介绍下这些注释的用法: a、@Override定义在https://www.360docs.net/doc/e37498483.html,ng.Override中,此注释只适用于修辞方法,表示一个方法声明打算重写超类中的另一个方法声明。如果方法利用此注释类型进行注解但没有重写超类方法,则编译器会生成一条错误消息。例如我们为某类重写toString()方法却写成了tostring(),并且我们为该方法添加了@Override注释,在编译时,会提示错误:方法未覆盖其父类的方法。 b、@Deprecated定义在https://www.360docs.net/doc/e37498483.html,ng.Deprecated中,此注释可用于修辞方法、属性、类,表示不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。在使用不被赞成的程序元素或在不被赞成的代码中执行重写时,编译器会发出警告。 c、@SuppressWarnings定义在https://www.360docs.net/doc/e37498483.html,ng.SuppressWarnings中,用来抑制编译时的警告信息。与前两个注释有所不同,你需要添加一个参数才能正确使用,这些参数值都是已经定义好了的,我们选择性的使用就好了,如@SuppressWarnings(value = "unchecked")。 3、自定义注解 Annotation类型使用关键字@interface定义一个注解,Annotation 类型可以被它们自己所标注。Java5.0定义了4个标准的meta-annotation类型,分别是:Target、Retention、Documented、Inherited,它们被用来提供对其它annotation类型作说明。这些类型和它们所支持的类在https://www.360docs.net/doc/e37498483.html,ng.annotation包中可以找到。 @Target的用法:指示注释类型所适用的程序元素的种类。如果注释类型声明中不存在Target 元注释,则声明的类型可以用在任一程序元素上。如果存在这样的元注释,则编译器强制实施指定的使用限制。 @Retention的用法:指示注释类型的注释要保留多久。如果注释类型声明中不存在Retention 注释,则保留策略默认为 RetentionPolicy.CLASS。 @Documented的用法:指示某一类型的注释将通过 javadoc 和类似的默认工具进行文档化。应使用此类型来注释这些类型的声明:其注释会影响由其客户端注释的元素的使用。如果类型声明是用 Documented 来注释的,则其注释将成为注释元素的公共 API 的一部分。Documented是一个没有成员的注释。 @Inherited的用法:指示注释类型自动被子类继承。 Inherited也是一个没有成员的注释。注意,如果使用@Inherited注释类以外的任何事物都是无效的。还要注意,此元注释仅对从超类继承注释有效;对已实现接口的注释无效。
java《注解解析》
Java注解(Annotation) (1) Annotation(注释)是JDK5.0及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注释是以‘@注释名’在代码中存在的,根据注释参数的个数,我们可以将注释分为:标记注释、单值注释、完整注释三类。它们都不会直接影响到程序的语义,只是作为注释(标识)存在,我们可以通过反射机制编程实现对这些元数据的访问。另外,你可以在编译时选择代码里的注释是否只存在于源代码级,或者它也能在class 文件中出现。 元数据的作用 如果要对于元数据的作用进行分类,目前还没有明确的定义,不过我们可以根据它所起的作用,大致可分为三类: 编写文档:通过代码里标识的元数据生成文档。 代码分析:通过代码里标识的元数据对代码进行分析。 编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查。 基本内置注释 @Override
Java代码 1. package com.iwtxokhtd.annotation; 2. /** 3. * 测试Override注解 4. * @author Administrator 5. * 6. */ 7. public class OverrideDemoTest { 8. 9. //@Override 10. public String tostring(){ 11. return "测试注释"; 12. } 13. } package com.iwtxokhtd.annotation; /** * 测试Override注解 * @author Administrator * */
java+JDBC小项目《学生管理系统》源码带注解
Java+javabean+JDBC学生管理系统 一、项目结构 本项目是使用javabean和jdbc做的,这个包是实体包 这个是菜单包,源码不会再发这些,自己写就好了。 二、项目运行结果
三、源码 废话不多说,直接上源码: 这两个是关键源码,是负责登录和学生信息操作的逻 辑类: public class AdminDaoImpl extends DBHelper implements AdminDao { Admin admin = null; /** * 登录 */ @SuppressWarnings("resource") @Override public Admin login(String name) { String sql = "select * from admin where username=?"; Object[] param = {name}; Object obj = this.excute(sql, param); ResultSet rs = (ResultSet) obj; try { while (rs.next()) { admin = new Admin(); String username = rs.getString("username"); String password = rs.getString("password"); admin.setUsername(username); admin.setPassword(password); } } catch (SQLException e) { System.out.println("未找到此name"); } return admin; } } public class StudentDaoImpl extends DBHelper implements StudentDao { Student stu = null; List
JAVA开发规范
1.编程规范 (一)命名规范 1.【强制】所有编程相关的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束 反例:_name / name_ / $name / name$ 正例:name 2.【强制】所有编程相关的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。 反例:XingMing [姓名] /xingBie() [性别] 正例:name[姓名] sex[性别]等国际通用的名称,可视为英文。 3. 【强制】类名使用UpperCamelCase(第一个词的首字母,以及后面每个词的首字母都大写,叫做“大骆驼拼写法”) 风格,必须遵从驼峰形式,但以下情形例外:(领域模型的相关命名)DO / DTO / VO / DAO 等。正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion 反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion
4. 【强制】方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase (第一个词的首字母小写,后面每个词的首字母大写,叫做“小骆驼拼写法”)风格,必须遵从驼峰形式。 正例: localValue / getHttpMessage() / inputUserId 5. 【强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。 正例: MAX_STOCK_COUNT 反例: MAX_COUNT 6. 【强制】抽象类命名使用 Abstract或Base 开头;异常类命名使用 Exception结尾;测试类命名以它要测试的类的名称开始,以 Test 结尾。 7. 【强制】中括号是数组类型的一部分,数组定义如下:String[] args; 请勿使用String args[]的方式来定义 8. 【强制】POJO类中的任何布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误。 反例:定义为基本数据类型 boolean isSuccess;的属性,它的方法也是isSuccess(),RPC框架在反向解析的时候,“以为”对应的属性名称是 success,导致属性获取不到,进而抛出异常。
java注释模板
Java文件上传类FileUploadUtil.java代码+注释
? 一个通用的Java文件上传类,支持上传图片,支持生成缩略图,设置最大上传文件字节数,不设置时默认10M,可接收来自表单的数据,当有多个文件域时, 只上传有文件的,忽略其他不是文件域的所有表单信息,支持用户对上传文件大小, 字节进行设置,本上传类可过滤掉以下文件类型:".exe", ".com", ".cgi", ".asp", ".php", ".jsp"等,你可自已添加过滤的文件后缀,上传文件时如果没有上传目录,则自动创建它。。。 ? package com.gootrip.util; import java.io.File; import java.util.*; import https://www.360docs.net/doc/e37498483.html,mons.fileupload.*; import javax.servlet.http.HttpServletRequest; import java.util.regex.Pattern; import java.io.IOException; import https://www.360docs.net/doc/e37498483.html,mons.fileupload.servlet.ServletFileUpload; import https://www.360docs.net/doc/e37498483.html,mons.fileupload.disk.DiskFileItemFactory; import java.util.regex.Matcher; /** * TODO 要更改此生成的类型注释的模板,请转至 * 窗口-首选项- Java -代码样式-代码模板 */ public class FileUploadUtil {
//当上传文件超过限制时设定的临时文件位置,注意是绝对路径 private String tempPath = null; //文件上传目标目录,注意是绝对路径 private String dstPath = null; //新文件名称,不设置时默认为原文件名 private String newFileName = null; //获取的上传请求 private HttpServletRequest fileuploadReq = null; //设置最多只允许在内存中存储的数据,单位:字节,这个参数不要设置太大 private int sizeThreshold = 4096; //设置允许用户上传文件大小,单位:字节 //共10M private long sizeMax = 10485760; //图片文件序号 private int picSeqNo = 1; private boolean isSmallPic = false; public FileUploadUtil(){ } public FileUploadUtil(String tempPath, String destinationPath){ this.tempPath = tempPath; this.dstPath = destinationPath; }
java注解与反射
Java的注解与反射 最近在学jdk1.5的新特性,看到注解部分难以理解,不明白到底有什么用处,但与反射接合起来看,就不难看出它的作用之一:代码分析,即使用反射提取java成分的注解,生成日志,便于查看以分析自己编写的代码。 我们先来看看注解的分类:元注解、自定义注解。 其中,元注解就是“用于注解的注解”,@Target、@Retention、@Documented、@Inherited,这些注解被包含在https://www.360docs.net/doc/e37498483.html,ng.annotation 包中,下面我们简要说明这四种注解的作用,其中的具体参数就靠各位自己去百度了。 @Target用于说明注解所修饰的对象范围,注解可以被用来修饰包、类、接口、成员方法、构造器、成员字段、方法参数、枚举值、Annotation类型;@Retention用于定义该自定义注解被保留的时间长短;@Documented用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。Documented是一个标记注解,没有成员;@Inherited 元注解是一个标记注解,如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类(注意: @Inherited annotation类型是被标注过的class的子类所继承。类并不从它所实现的接口继承annotation,方法并不从它所重载的方法继承annotation。当@Inherited annotation类型标注的annotation的Retention是RetentionPolicy.RUNTIME,则反射API增强了这种继承性。
java注释测试题
java注释测试题 Java源代码原题,加注释 import java.awt.Canvas; import java.awt.Color; import java.awt.Font; import java.awt.Frame; import java.awt.Graphics; import java.awt.Image; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.util.Arrays; import javax.swing.JApplet; import javax.swing.JFrame; import javax.swing.JPanel; public class Billard4K extends JPanel implements Runnable, MouseListener, MouseMotionListener { // GAME STA TES public final int WAITING_TO_START = 0; public final int WAITING_TO_HIT = 1; public final int MOVING = 2; public final int FINISHING = 3; public int state = 0; // TABLE double hR; double[] tableX; double[] tableY; double[] holesX; double[] holesY; // BALLS public int nballs;
JAVA源代码规范
JAVA代码规范 (初稿) 2004、4 ?版本更新信息 本版本创建/修改、维护、批准涉及人员如下: 创建/修改者:XX 维护者:XX 批准者:XX 具体版本更新记录如表1-1: 表1-1 版本更新记录 修改方式:A-增加 M-修改 D-删除?目得 本文提供一整套编写高效可靠得 Java 代码得标准、约定与指南。它们以安全可靠得软件工程原则为基础,使代码易于理解、维护与增强灵活性。通过遵循一套通用得程序设计标准,显著提高 Java 软件开发者得生产效率,为开发团队得程序设计带来更大得一致性,使软件开发团队得效率明显提高。 ?规范得执行 本文档适用于公司内进行软件开发得所有技术人员,即公司内软件开发人员编写得所有源代码都必须遵循本规范。 除临时性项目之外得任何项目均应严格按照此标准执行,“临时性项目”指:?为市场推广目得而编写得示程序 ?为一次性用途而编写得临时性小程序 为学习目得而编写得测试程序 ?文档类别
本文档属标准规范类得项目限制级文档,未经总经理及总经理授权人员批准,不得提供公司以外得人员阅读与使用。 ?版本更新条件 本文档得定期评审时间为每年得1月,评审及修订步骤依据SEPG工作规范规定。此外,如遇下列条件可进行评审,并根据评审结果决定就是否需要进行修订: ?本文档所列得引用得标准已经更新。 ?本文档得使用者若对本文档有任何评论、建议或意见,请通过企业内部网络发电子邮件给SEPG,所收到得电子邮件将会在评审与修订时给予充分 得考虑。 ?使用对象 本文档得使用对象包括: ?项目管理者 ?质量保证人员 ?软件开发人员 目录 1介绍 (4) 1、1为什么要有编码规范 (4) 2通用代码格式 (4) 2、1文件组织 (4) 2、2缩进 (5) 2、3行长度 (6) 2、4换行 (6) 2、5空行 (7) 2、6空格 (7) 2、7注释 (8) 2、7、1注释约定 (8) 2、7、2实现注释得格式 (9) 2、7、3文档注释 (10) 2、7、4快速浏览javadoc (10) 2、8声明 (11) 2、8、1每行声明变量得数量 (11) 2、8、2初始化 (11) 2、8、3布局 (11) 2、8、4类与接口得声明 (12) 2、9语句 (12) 2、9、1简单语句 (12) 2、9、2复合语句 (13) 2、9、3返回语句 (13) 2、9、4if,if-else,if else-if else语句 (13)
JAVA8-十大新特性详解
JAVA8十大新特性详解 本教程将Java8的新特新逐一列出,并将使用简单的代码示例来指导你如何使用默认接口方法,lambda表达式,方法引用以及多重Annotation,之后你将会学到最新的API上的改进,比如流,函数式接口,Map以及全新的日期API Formula接口在拥有calculate方法之外同时还定义了sqrt方法,实现了Formula接口的子类只需要实现一个calculate方法,默认方法sqrt将在子类上可以直接使用。 文中的formula被实现为一个匿名类的实例,该代码非常容易理解,6行代码实现了计算sqrt(a*100)。在下一节中,我们将会看到实现单方法接口的更简单的做法。
public int compare(String a,String b){ return https://www.360docs.net/doc/e37498483.html,pareTo(a); } }); 只需要给静态方法Collections.sort传入一个List对象以及一个比较器来按指定顺序排列。通常做法都是创建一个匿名的比较器对象然后将其传递给sort方法。 看到了吧,代码变得更段且更具有可读性,但是实际上还可以写得更短: 对于函数体只有一行代码的,你可以去掉大括号{}以及return关键字,但是你还可以写得更短点: Java编译器可以自动推导出参数类型,所以你可以不用再写一次类型。接下来我们看看lambda表达式还能作出什么更方便的东西来: 三、函数式接口 Lambda表达式是如何在java的类型系统中表示的呢?每一个lambda表达式都对应一个类型,通常是接口类型。而“函数式接口”是指仅仅只包含一个抽象方法的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。因为默认方法不算抽象方法,所以你也可以给你的函数式接口添加默认方法。
Java实验报告及其源代码 Java基本程序设计
实验1 Java基本程序设计 一、实验目的 1.掌握设置Java 程序运行环境的方法; 2.了解Java 的数据类型; 3.掌握变量的声明方式; 4.理解运算符的优先级; 5.掌握Java 基本数据类型、运算符与表达式; 6.掌握Java基本输入输出方法。 二、实验环境 1.PC微机; 2.DOS操作系统或 Windows 操作系统; 3.Java sdk程序开发环境、eclipse集成环境。 三、实验内容 1.货币转换 在控制台下输入任意一个美元数值,将其转换成等价的人民币数值(假设100美元=636.99人民币)后在消息框中输出。 2.输出两个数的较大值 分别在两个对话框中输入两个任意的数值,显示其较大的数值。 四、实验步骤 1.新建Java项目,并创建package ; 2.创建两个java类文件,分别命名为 CurrencyConversion.java 和 valueCompare.java ; 3.在 CurrencyConversion.java 中写入代码: package FirstExperiment; import java.util.Scanner;
import javax.swing.JOptionPane; public class CurrencyConversion { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("Please input the money(dollar): "); Scanner input = new Scanner(System.in); double moneyOfDollar = input.nextDouble(); double moneyOfRMB = moneyOfDollar * 6.3699 ; String output = "$" + moneyOfDollar + "=" + "¥" + moneyOfRMB ; JOptionPane.showMessageDialog(null, output); } } 4.在 valueCompare.java 中写入代码: package FirstExperiment; import javax.swing.JOptionPane; public class valueCompare { public static void main(String[] args) { String stringNumber1 = JOptionPane.showInputDialog("Please input the first number") ; double number1 = Double.parseDouble(stringNumber1) ; String stringNumber2 = JOptionPane.showInputDialog("Please input the second number") ; double number2 = Double.parseDouble(stringNumber2); if(number1 > number2) JOptionPane.showMessageDialog(null, number1 + " is bigger"); else
Java 类注释文档编写方法
Java 类注释文档编写方法 对于Java语言,最体贴的一项设计就是它并没有打算让人们为了写程序而写程序——人们也需要考虑程序的文档化问题。对于程序的文档化,最大的问题莫过于对文档的维护。若文档与代码分离,那么每次改变代码后都要改变文档,这无疑会变成相当麻烦的一件事情。解决的方法看起来似乎很简单:将代码同文档“链接”起来。为达到这个目的,最简单的方法是将所有内容都置于同一个文件。然而,为使一切都整齐划一,还必须使用一种特殊的注释语法,以便标记出特殊的文档;另外还需要一个工具,用于提取这些注释,并按有价值的形式将其展现出来。这些都是Java必须做到的。 1 简介 用于提取注释的工具叫作javadoc。它采用了部分来自Java编译器的技术,查找我们置入程序的特殊注释标记。它不仅提取由这些标记指示的信息,也将毗邻注释的类名或方法名提取出来。这样一来,我们就可用最轻的工作量,生成十分专业的程序文档。 javadoc输出的是一个HTML文件,可用自己的Web浏览器查看。该工具允许我们创建和管理单个源文件,并生动生成有用的文档。由于有了jvadoc,所以我们能够用标准的方法创建文档。而且由于它非常方便,所以我们能轻松获得所有Java库的文档。 2 具体语法 所有javadoc命令都只能出现于“/**”注释中。但和平常一样,注释结束于一个“*/”。主要通过两种方式来使用javadoc:嵌入的HTML,或使用“文档标记”。其中,“文档标记”(Doc tags)是一些以“@”开头的命令,置于注释行的起始处(但前导的“*”会被忽略)。有三种类型的注释文档,它们对应于位于注释后面的元素:类、变量或者方法。也就是说,一个类注释正好位于一个类定义之前;变量注释正好位于变量定义之前;而一个方法定义正好位于一个方法定义的前面。如下面这个简单的例子所示: 注意javadoc只能为public(公共)和protected(受保护)成员处理注释文档。“private”(私有)和“友好”(详见5章)成员的注释会被忽略,我们看不到任何输出(也可以用-private标记包括private成员)。这样做是有道理的,因为只有public和protected成员才可在文件之外使用,这是客户程序员的希望。然而,所有类注释都会包含到输出结果里。
java注释规范总结大全
在软件开发的过程中总是强调注释的规范,但是没有一个具体的标准进行说明,通常都是在代码编写规范中简单的描述几句,不能作为一个代码注释检查的标准和依据,做什么都要有一个依据吗:),现在我特整理了一个《Java的注释规范》,内容来自网络、书籍和自己的实际积累。 JA V A注释规范 版本/状态作者版本日期 1.0 ghc 2008-07-02 一、背景 1、当我们第一次接触某段代码,但又被要求在极短的时间内有效地分析这段代码,我们需要什么样的注释信息? 2、怎么样避免我们的注释冗长而且凌乱不堪呢? 3、在多人协同开发、维护的今天,我们需要怎么样的注释来保证高质、高交的进行开发和维护工作呢? 二、意义 程序中的注释是程序设计者与程序阅读者之间通信的重要手段。应用注释规范对于软件本身和软件开发人员而言尤为重要。并且在流行的敏捷开发思想中已经提出了将注释转为代码的概念。好的注释规范可以尽可能的减少一个软件的维护成本, 并且几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护。好的注释规范可以改善软件的可读性,可以让开发人员尽快而彻底地理解新的代码。好的注释规范可以最大限度的提高团队开发的合作效率。长期的规范性编码还可以让开发人员养成良好的编码习惯,甚至锻炼出更加严谨的思维能力。 三、注释的原则 1、注释形式统一 在整个应用程序中,使用具有一致的标点和结构的样式来构造注释。如果在其他项目组发现他们的注释规范与这份文档不同,按照他们的规范写代码,不要试图在既成的规范系统中引入新的规范。 2、注释的简洁 内容要简单、明了、含义准确,防止注释的多义性,错误的注释不但无益反而有害。 3、注释的一致性 在写代码之前或者边写代码边写注释,因为以后很可能没有时间来这样做。另外,如果有机会复查已编写的代码,在今天看来很明显的东西六周以后或许就不明显了。通常描述性注释先于代码创建,解释性注释在开发过程中创建,提示性注释在代码完成之后创建。修改代码的同时修改相应的注释,以保证代码与注释的同步。 4、注释的位置 保证注释与其描述的代码相邻,即注释的就近原则。对代码的注释应放在其上方相邻或右方的位置,不可放在下方。避免在代码行的末尾添加注释;行尾注释使代码更难阅读。不过在批注变量声明时,行尾注释是合适的;在这种情况下,将所有行尾注释要对齐。 5、注释的数量 注释必不可少,但也不应过多,在实际的代码规范中,要求注释占程序代码的比例达到20%左右。注释是对代码的“提示”,而不是文档,程序中的注释不可喧宾夺主,注释太多了会让人眼花缭乱,注释的花样要少。不要被动的为写注释而写注释。 6、删除无用注释
参考文献与注释的编排方法.doc
参考文献与注释的编排方法 一、注释的标注方法 注释是对论著正文中某一特定内容的进一步解释或补充说明,以及未公开发表的私人通信、内部资料、书稿和仅有中介文献信息的"转引自"等类文献的引用著录,排印在该页地脚(数字加圆圈,如①、②...)。 二、参考文献的标注方法 参考文献是作者写作论著时所引用的已公开发表的文献书目,或有明确收藏地点的善本、档案,按照在正文中引用的顺序,用数字加方括号集中列表于文末。正文中的标注方法是:1.引用文献原文需要在正文中标出序号与页码(如:"资本主义生产的内在规律在竞争中是以颠倒的形式表现出来的"[1]251),文后参考文献中不出现页码项;2.引用参考文献中的观点可以只标出序号或者序号与页码同时标注(如:生产力决定生产关系[3]);3.文中多次引用同一参考文献内容,在文后参考文献表中只出现一次,其中不注页码;在正文中标注首次引用的文献序号,并在序号的角标外著录引文页码;4.参考文献的编排格式见附注。 例文 国内外现有的竞争理论文献,或者忽略了马克思的竞争理论,或者只把它作为竞争理论发展的一个阶段或众多竞争理论中的一个流派,停留在马克思对市场竞争过程的描述上。然而,马克思指出:"资本主义生产的内在规律在竞争中是以颠倒的形式表现出来的"[1]251。"只有了解了资本的内在本性,才能对竞争进行科学的分析,正像只有认识了天体的实际的、
但又直接感觉不到的运动的人,才能了解天体的表面运动一样。"[2]352 ...... ......而且可以说明,当时政治经济学没有理解的"关于资本主义竞争的基本规律,即调节一般利润率和由它决定的所谓生产价格的规律,也是建立在商品价值和商品成本价格之间的这种差别之上的,建立在由此引起的商品低于价值出售也能获得利润这样一种可能性之上的"[1]45。 ...... ......随着许多偶然的改进,产品系列趋于增大,零件数量趋于增加,会产生大量的多样化成本。[3] 参考文献: [1] 马克思.资本论(第3卷)[M].北京:人民出版社,1975. [2] 马克思.资本论(第1卷)[M].北京:人民出版社,1975. [3] 安德森·派恩二世.21世纪企业竞争的新前沿——大规模定制模式下的敏捷产品开发[M].北京:机械工业出版社,1999. 附注: 一、参考文献著录项目 1. 主要责任者 (专著作者、论文集主编、学位申报人、专利申请人、报告撰写人、期刊文章作者、析出文章作者)。多个责任者之间以","分隔,注意在本项数据中不得出现缩写点"."。主要责任者只列姓名,其后不加"著"、"编"、"主编"、"合编"等责任说明。 2.文献题名; 3.文献类型及载体类型标识;