java编写一个表格列出你的姓名性别和出生年月注解.docx
- 文档编号:5871416
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:10
- 大小:21.13KB
java编写一个表格列出你的姓名性别和出生年月注解.docx
《java编写一个表格列出你的姓名性别和出生年月注解.docx》由会员分享,可在线阅读,更多相关《java编写一个表格列出你的姓名性别和出生年月注解.docx(10页珍藏版)》请在冰豆网上搜索。
java编写一个表格列出你的姓名性别和出生年月注解
竭诚为您提供优质文档/双击可除
java编写一个表格,列出你的姓名,性别和出生年月,注解
篇一:
java注解详解
jaVa注解的几大作用及使用方法详解注解(annotation)
1、annotation的工作原理:
jdk5.0中提供了注解的功能,允许开发者定义和使用自己的注解类型。
该功能由一个定义注解类型的语法和描述一个注解声明的语法,读取注解的api,一个使用注解修饰的class文件和一个注解处理工具组成。
annotation并不直接影响代码的语义,但是他可以被看做是程序的工具或者类库。
它会反过来对正在运行的程序语义有所影响。
annotation可以从源文件、class文件或者在运行时通过反射机制多种方式被读取。
常见的作用
有以下几种:
1,生成文档。
这是最常见的,也是java最早提供的注解。
常用的有@see@param@return等
2,跟踪代码依赖性,实现替代配置文件功能。
比较常见的是spring2.5开始的基于注解配置。
作用就是减少配置。
现在的框架基本都使用了这种配置来减少配置文件的数量。
3,在编译时进行格式检查。
如@override放在方法前,如果你这个方法并不是覆盖了超类方法,则编译时就能检查出。
*@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。
*方法的名称就是参数的名称,返回值类型就是参数的类型。
*可以通过default来声明参数的默认值。
父类,接口
java.lang.annotation
包java.lang.annotation中包含所有已定义或自定义注解所需用到的原注解和接口。
如接口java.lang.annotation.annotation是所有注解继承的接口,并且是自动继承,不需要定义时指定,类似于所有类都自动继承object。
该包同时定义了四个元注解;
常见注解
@override注解:
注释类型override
@target(value=method)
@Retention(value=souRce)
public@interfaceoverride
@override注解表示子类要重写父类的对应方法。
下面是一个使用@override注解的例子:
classa{
privatestringid;
a(stringid){
this.id=id;
}
@override
publicstringtostring(){
returnid;
}
}
@deprecated注解:
注释类型deprecated
@documented
@Retention(value=Runtime)
public@interfacedeprecated
@deprecated注解表示方法是不被建议使用的。
下面是一个使用@deprecated注解的例子:
classa{
privatestringid;
a(stringid){
this.id=id;
}
@deprecated
publicvoidexecute(){
system.out.println(id);
}
publicstaticvoidmain(string[]args){
aa=newa("a123");
a.execute();
}
}
@suppresswarnings注解:
注释类型suppresswarnings
@target(value={type,Field,method,paRameteR,constRuctoR,local_VaRiable})
@Retention(value=souRce)
public@interfacesuppresswarnings
指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译器警告。
注意,在给定元素中取消显示的警告集是所有包含元素中取消显示的警告的超集。
例如,如果注释一个类来取消显示某个警告,同时注释一个方法来取消显示另一个警告,那么将在此方法中同时取消显示这两个警告。
下面是一个使用@suppresswarnings注解的例子:
@suppresswarnings("unchecked")
publicstaticvoidmain(string[]args){
listlist=newarraylist();
list.add("abc");
}
自定义注解
使用@interface自定义注解时,自动继承了java.lang.annotation.annotation接口,由编译程序自动完成其他细节。
在定义注解时,不能继承其他的注解或接口。
1,自定义最简单的注解:
public@interfacemyannotation{
}
使用自定义注解:
publicclassannotationtest2{
@myannotation
publicvoidexecute(){
system.out.println("method");
}
}
2,添加变量:
public@interfacemyannotation{
stringvalue1();
}
使用自定义注解:
publicclassannotationtest2{
@myannotation(value1="abc")
publicvoidexecute(){
system.out.println("method");
}
}
添加默认值:
public@interfacemyannotation{
stringvalue1()default"abc";
}
3、多变量使用枚举:
public@interfacemyannotation{
stringvalue1()default"abc";
myenumvalue2()defaultmyenum.sunny;
}
enummyenum{
sunny,Rainy
}
使用自定义注解:
publicclassannotationtest2{
@myannotation(value1="a",value2=myenum.sunny)
publ(java编写一个表格,列出你的姓名,性别和出生年月,注解)icvoidexecute(){
system.out.println("method");
}
}
4、数组变量:
public@interfacemyannotation{
string[]value1()default"abc";
}
使用自定义注解:
publicclassannotationtest2{
@myannotation(value1={"a","b"})
publicvoidexecute(){
system.out.println("method");
}
}
当注解中使用的属性名为value时,对其赋值时可以不指定属性的名称而直接写上属性值接口;除了value意外的变量名都需要使用name=value的方式赋值。
5、限定注解的使用:
限定注解使用@target。
@documented
@Retention(value=Runtime)
@target(value=annotation_type)
public@interfacetarget
指示注释类型所适用的程序元素的种类。
如果注释类型声明中不存在target元注释,则声明的类型可以用在任一程序元素上。
如果存在这样的元注释,则编译器强制实施指定的使用限制。
例如,此元注释指示该声明类型是其自身,即元注释类型。
它只能用在注释类型声明上:
@target(elementtype.annotation_type)
public@interfacemetaannotationtype{
...
}
此元注释指示该声明类型只可作为复杂注释类型声明中的成员类型使用。
它不能直接用于注释:
@target({})
public@interfacemembertype{
...
}
这是一个编译时错误,它表明一个elementtype常量在target注释中出现了不只一次。
例如,以下元注释是非法的:
@target({elementtype.Field,elementtype.method,elementtype.Field})
public@interfacebogus{
...
}
publicenumelementtype
extendsenum
程序元素类型。
此枚举类型的常量提供了java程序中声明的元素的简单分类。
这些常量与target元注释类型一起使用,以指定在什么情况下使用注释类型是合法的。
annotation_type
注释类型声明
constRuctoR
构造方法声明
Field
字段声明(包括枚举常量)
local_VaRiable
局部变量声明
method
方法声明
篇二:
java录入公司职员信息
《java程序设计》课程设计指导书
一、课程设计的目的
二、课程设计题目、结构及要求
4.设计一个录入和显示公司职员信息的程序界面,成员信息包括id、姓名、性别、生日、地址和部门等。
设计者根据需要选取使用组件。
(使用gui完成)publicclassemployeeimplementsjava.io.serializable{
stringnumber,name,discipling,grade,borth,sex;
publicemployee(){}
publicvoidsetnumber(stringnumber){
this.number=number;}
publicstringgetnumber(){returnnumber;}
publicvoidsetname(stringname){this.name=name;}
publicstringgetname(){returnname;}
publicvoidsetdiscipling(stringdiscipling){this.discipling=discipling;}publicstringgetdisciping(){returndiscipling;}
publicvoidsetgrade(stringgrade){this.grade=grade;}
publicstringgetgrade(){returngrade;}
publicvoidsetborth(stringborth){this.borth=borth;}
publicstringgetborth(){returnborth;}
publicvoidsetsex(stringsex){this.sex=sex;}
publicstringgetsex(){returnsex;}
}
2.
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
importjava.util.hashtable;
publicclassemployeemanagerextendsjFrameimplementsactionlistener{employeesituation基本信息录入=null;
modifysituation基本信息修改=null;
inquest基本信息查询=null;
delete基本信息删除=null;
jmenubarbar;
jmenufilemenu;
jmenuitem录入,修改,查询,删除;
containercon=null;
hashtable基本信息=null;
Filefile=null;
cardlayoutcard=null;
jlabellabel=null;
jpanelpcenter;
publicemployeemanager(){
录入=newjmenuitem("录入员工基本信息");
修改=newjmenuitem("修改员工基本信息");
查询=newjmenuitem("查询员工基本信息");
删除=newjmenuitem("删除员工基本信息");
bar=newjmenubar();
filemenu=newjmenu("菜单选项");
filemenu.add(录入);
filemenu.add(修改);
filemenu.add(查询);
filemenu.add(删除);
bar.add(filemenu);
setjmenubar(bar);
label=newjlabel("欢迎进入员工信息管理系统",jlabel.centeR);
label.setFont(newFont("sansserif",Font.bold+Font.italic,25));
label.setForeground(color.red);
基本信息=newhashtable();
录入.addactionlistener(this);
修改.addactionlistener(this);
查询.addactionlistener(this);
删除.addactionlistener(this);
card=newcardlayout();
con=getcontentpane();
pcenter=newjpanel();
pcenter.setlayout(card);
pcenter.setbackground(color.red);
file=newFile("基本信息.txt");
if(!
file.exists())
{
try
{
Fileoutputstreamout=newFileoutputstream(file);
objectoutputstreamobjectout=newobjectoutputstream(out);
objectout.writeobject(基本信息);
objectout.close();
out.close();
}
catch(ioexceptione)
{
}
}
基本信息录入=newemployeesituation(file);
基本信息修改=newmodifysituation(file);
基本信息查询=newinquest(this,file);
基本信息删除=newdelete(file);
pcenter.add("欢迎语界面",label);
pcenter.add("录入界面",基本信息录入);
pcenter.add("修改界面",基本信息修改);
pcenter.add("删除界面",基本信息删除);
con.add(pcenter,borderlayout.centeR);
con.validate();
addwindowlistener(newwindowadapter()
{
publicvoidwindowclosing(windowevente)
{
system.exit(0);
}});
setVisible(true);
setbounds(100,50,420,380);
validate();
}
publicvoidactionperformed(actionevente)
{
if(e.getsource()==录入)
{
card.show(pcenter,"录入界面");
}
elseif(e.getsource()==修改)
{
card.show(pcenter,"修改界面");
}
elseif(e.getsource()==查询)
{基本信息查询.setVisible(true);
}
elseif(e.getsource()==删除){
card.show(pcenter,"删除界面");
}
}
publicstaticvoidmain(stringargs[])
{
newemployeemanager();
}}
3.
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
importjava.util.*;
publicclassemployeesituationextendsjpanelimplementsactionlistener{
hashtable基本信息表=null;
jtextField员工号,姓名,工资;
choice部门;
jRadiobutton男,女;
employee员工=null;
buttongroupgroup=null;
jbutton录入,重置;
Fileinputstreaminone=null;
objectinputstreamintwo=null;
Fileoutputstreamoutone=null;
objectoutputstreamouttwo=null;
Filefile=null;
篇三:
java教程之jaVa注解
jaVa注解在开发java程序,尤其是javaee应用的时候,总是免不了与各种配置文件打交道。
以javaee中典型的s(pring)s(truts)h(ibernate)架构来说,spring、struts和hibernate这三个框架都有自己的xml格式的配置文件。
这些配置文件需要与java源代码保存同步,否则的话就可能出现错误。
而且这些错误有可能到了运行时刻才被发现。
把同一份信息保存在两个地方,总是个坏的主意。
理想的情况是在一个地方维护这些信息就好了。
其它部分所需的信息则通过自动的方式来生成。
jdk5中引入了源代码中的注解(annotation)这一机制。
注解使得java
源代码中不但可以包含功能性的实现代码,还可以添加元数据。
注解的功能类似于代码中的注释,所不同的是注解不是提供代码功能的说明,而是实现程序功能的重要组成部分。
java注解已经在很多框架中得到了广泛的使用,用来简化程序中的配置。
使用注解
在一般的java开发中,最常接触到的可能就是@override和@supresswarnings这两个注解了。
使用@override的时候只需要一个简单的声明即可。
这种称为标记注解(markerannotation),它的出现就代表了某种配置语义。
而其它的注解是可以有自己的配置参数的。
配置参数以名值对的方式出现。
使用@supresswarnings的时候需要类似@supresswarnings({"uncheck","unused"})这样的语法。
在括号里面的是该注解可供配置的值。
由于这个注解只有一个配置参数,该参数的名称默认为value,并且可以省略。
而花括号则表示是数组类型。
在jpa中的@table注解使用类似@table(name="customer",schema="app")这样的语法。
从这里可以看到名值对的用法。
在使用注解时候的配置参数的值必须是编译时刻的常量。
从某种角度来说,可以把注解看成是一个xml元素,该元素可以有不同的预定义的属性。
而属性的值是可以在声明该元素的时候自行指定的。
在代码中使用注解,就相当于把一部分元数据从xml文件移到了代码本身之中,在一个地方管理和维护。
开发注解
在一般的开发中,只需要通过阅读相关的api文档来了解每个注解的配置参数的含义,并在代码中正确使用即可。
在有些情况下,可能会需要开发自己的注解。
这在库的开发中比较常见。
注解的定义有点类似接口。
下面的代码给出了一个简单的描述代码分工安排的注解。
通过该注解可以在源代码中记录每个类或接口的分工和进度情况。
飞速小说
@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。
方法的名称就是参数的名称,返回值类型就是参数的类型。
可以通过default来声明参数的默认值。
在这里可以看到@Retention和@target这样的元注解,用来声明注解本身的行为。
@Retention用来声明注解的保留策略,有class、Runtime和souRce这三种,分别表示注解保存在类文件、jVm运行时刻和源代码中。
只有当声明为Runtime的时候,才能够在运行时刻通过反射api来获取到注解的信息。
@target用来声明注解可以被添加在哪些类型的元素上,如类型、方法和域等。
处理注解
在程序中添加的注解,可以在编译时刻或是运行时刻来进行处理。
在编译时刻处理的时候,是分成多趟来进行的。
如果在某趟处理中产生了新的java源文件,那么就需要另外一趟处理来处理新生成的源文件。
如此往复,直到没有新文件被生成为止。
在完成处理之后,再对java代码进行编译。
jdk5中提供了apt工具用来对注解进行处理。
apt是一个命令行工具,与之配套的还有一套用来描述程序语义结构的mirrorapi
。
mirrorapi(com.sun.mirror.*)描述的是程序在编译时刻的静态结构。
通过mirrorapi可以获取到被注解的java类型元素的信息,从而提供相应的处理逻辑。
具体的处理工作交给apt工具来完成。
编写注解处理器的核心是annotationprocessorFactory和annotationprocessor两个接口。
后者表示的是注解处理器,而前者则是为某些注解类型创建注解处理器的工厂。
以上面的注解assignment为例,当每个开发人员都在源代码中更新进度的话,就可以通过一个注解处理器来生成一个项目整体进度的报告。
首先是注解处理器工厂的实现。
飞速小说
annotationprocessorFactory接口有三个方法:
getprocessorFor是根据注解的类型来返回特定的注解处理器;supportedannotationtypes是返回该工厂生成的注解处理器所能支持的注解类型;supportedoptions用来表示所支持的附
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 编写 一个 表格 列出 姓名 性别 出生 年月 注解