文章目录:
- 1、有没有中文注释的jdk源码? (java)
- 2、java中内建注解的源代码是什么?
- 3、java 注解都有哪些东西?
- 4、java 怎样给源代码添加注释
- 5、求JAVA源代码,要有注释,所有财富都在下面了
- 6、JAVA代码中文注释乱码
有没有中文注释的jdk源码? (java)
基本没有,一般都是通过API帮助文档(这个才有中文版)来学习jdk源码。
java中内建注解的源代码是什么?
Sorry, 你的问题能补充一下吗?
Java领域中注解由来已久:
指的是通过@KeyWord这种标记利用JDK或者容器提供的服务,如持久化、API文档生成等。
你或许可以通过搜索“Java 注解”得到更符合你需要的答案。
java 注解都有哪些东西?
Java注解相当于对类或者方法或者变量额外的注释(标识)。以下是转载
-------------------------------------------------------
Annotation是Java5、6只后的新特征(中文称之为注解),并且越来越多的得到了应用,比如Spring、Hibernate3、Struts2、iBatis3、JPA、JUnit等等都得到了广泛应用,通过使用注解,代码的灵活性大大提高。
这些都是使用别人定义的注解,一般注解的使用都是在一些基础框架或者类库中来定义的,因此很少见过有人自己去写一个注解出来并使用在程序中,因此注解的使用常常给人感觉很神秘,这就为你揭开注解的面纱。
注解的神秘之处在于:通过类似注释的方式,可以控制程序的一些行为,运行时的状态,可以为成员赋值,做配置信息等等,与常规编码思维大相径庭。
只用别人定义好的注解是搞不懂这些问题的,要想真正知道注解内部的秘密,要自己定义注解,然后在程序中获取注解信息,拿到注解信息后,就可以为我所用了。
下面我简单演示下三类注解的用法:类注解、方法注解、字段(也称之域)注解的定义与适用,并看看如何获取注解的信息。
一、定义注解
package lavasoft.anntest;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 类注解
*
* @author leizhimin 2009-12-18 14:15:46
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyAnnotation4Class {
public String msg();
}
package lavasoft.anntest;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 方法注解
*
* @author leizhimin 2009-12-18 14:16:05
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotation4Method {
public String msg1();
public String msg2();
}
package lavasoft.anntest;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 字段注解
*
* @author leizhimin 2009-12-18 15:23:12
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface MyAnnotation4Field {
public String commont();
public boolean request();
}
二、写一个类,用上这些注解
package lavasoft.anntest;
/**
* 一个普通的Java类
*/
@MyAnnotation4Class(msg = "测试类注解信息")
class TestClass {
@MyAnnotation4Field(commont = "成员变量的注解信息", request = true)
private String testfield;
@MyAnnotation4Method(msg1 = "测试方法注解信息1", msg2 = "测试方法注解信息2")
public void testMethod() {
System.out.println("Hello World!");
}
}
三、测试注解
为了使用注解,需要通过反射获取注解的对象。通过注解对象来操作注解信息。
package lavasoft.anntest;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
/**
* 测试类
*
* @author leizhimin 2009-12-18 14:13:02
*/
public class TestOptAnnotation {
public static void main(String[] args) throws NoSuchMethodException, NoSuchFieldException {
TestClass t = new TestClass();
System.out.println("-----------MyAnnotation4Class注解信息---------");
MyAnnotation4Class an4clazz = t.getClass().getAnnotation(MyAnnotation4Class.class);
System.out.println(an4clazz.msg());
System.out.println("-----------MyAnnotation4Method注解信息---------");
Method method = t.getClass().getMethod("testMethod", new Class[0]);
MyAnnotation4Method an4method = method.getAnnotation(MyAnnotation4Method.class);
System.out.println(an4method.msg1());
System.out.println(an4method.msg2());
System.out.println("-----------MyAnnotation4Field注解信息---------");
Field field = t.getClass().getDeclaredField("testfield");
MyAnnotation4Field an4field = field.getAnnotation(MyAnnotation4Field.class);
System.out.println(an4field.commont());
System.out.println(an4field.request());
}
}
运行结果:
-----------MyAnnotation4Class注解信息---------
测试类注解信息
-----------MyAnnotation4Method注解信息---------
测试方法注解信息1
测试方法注解信息2
-----------MyAnnotation4Field注解信息---------
成员变量的注解信息
true
Process finished with exit code 0
四、总结
看完上面的测试过程,Annotation已经不再神秘了,这里总结下自定义注解的使用方法:
1、自定义注解,注意注解的时空范围,简单说就是注解针对的目标(类、方法、字段),以及注解的时效(运行时、或者源码中有效)。
2、要获取注解的信息,必须通过Java的反射技术来获取Annotation对象,因为你除此之外没有别的获取注解对象的方法。
3、获取了注解对象,就可以调用注解的方法来获取相对应的值了。为基础框架所用。
4、当然,注解也可以没有定义成员,这样注解就成了一个标记符号了。
java 怎样给源代码添加注释
1、单行(single-line)--短注释://……
单独行注释:在代码中单起一行注释,
注释前最好有一行空行,并与其后的代码具有一样的缩进层级。如果单行无法完成,则应采用块注释。
注释格式:/*
注释内容
*/
行头注释:在代码行的开头进行注释。主要为了使该行代码失去意义。
注释格式://
注释内容
行尾注释:尾端(trailing)--极短的注释,在代码行的行尾进行注释。一般与代码行后空8(至少4)个格,所有注释必须对齐。
注释格式:代码
+
8(至少4)个空格
+
//
注释内容
2、块(block)--块注释:/*……*/
注释若干行,通常用于提供文件、方法、数据结构等的意义与用途的说明,或者算法的描述。一般位于一个文件或者一个方法的前面,起到引导的作用,也可以根据需要放在合适的位置。这种域注释不会出现在HTML报告中。注释格式通常写成:
/*
*
注释内容
*/
3、文档注释:/**……*/
注释若干行,并写入javadoc文档。每个文档注释都会被置于注释定界符
/**......*/
...
求JAVA源代码,要有注释,所有财富都在下面了
每天有时间的话 , 会回答一两个图形界面的问题, 但是分数最好还是高点才有兴趣.
具体代码和详细的注释如下
员工类
public class Emp {
private int num;//工号
private String name;//姓名
private double basicPay;//基本工资
private double meritPay;//绩效工资
public Emp(){//无参数构造器
}
public Emp(int num, String name, double basicPay, double meritPay) {//有参数构造器
super();
this.num = num;
this.name = name;
this.basicPay = basicPay;
this.meritPay = meritPay;
}
//重写Object的toString 方法
public String toString() {
return "工号:"+num+"\t姓名:"+name+"\t基本工资:"+basicPay+"\t绩效工资"+meritPay;
}
//下面是属性的set和get
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getBasicPay() {
return basicPay;
}
public void setBasicPay(double basicPay) {
this.basicPay = basicPay;
}
public double getMeritPay() {
return meritPay;
}
public void setMeritPay(double meritPay) {
this.meritPay = meritPay;
}
}
输入界面类
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class EmpFrome extends JFrame implements ActionListener {
JTextField jtfnum, jtfname, jtfbp, jtfmp;
JButton jbwtf;
public EmpFrome() {
JLabel jl1 = new JLabel("工号");
jtfnum = new JTextField(8);
add(jl1);
add(jtfnum);
JLabel jl2 = new JLabel("姓名");
jtfname = new JTextField(8);
add(jl2);
add(jtfname);
JLabel jl3 = new JLabel("基本工资");
jtfbp = new JTextField(8);
add(jl3);
add(jtfbp);
JLabel jl4 = new JLabel("绩效工资");
jtfmp = new JTextField(8);
add(jl4);
add(jtfmp);
JLabel jl5 = new JLabel();
jbwtf = new JButton("写入文件");
jbwtf.addActionListener(this);
add(jl5);
add(jbwtf);
setLayout(new GridLayout(5, 2));
setTitle("员工信息录入");
setSize(290, 230);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
if (cmd.equals("写入文件")) {
try{
//获取数据
int num = Integer.parseInt(jtfnum.getText().trim());
String name = jtfname.getText().trim();
double bp = Double.parseDouble(jtfbp.getText().trim());
double mp = Double.parseDouble(jtfmp.getText().trim());
Emp emp = new Emp(num, name, bp, mp);
writeToFile(emp);
JOptionPane.showMessageDialog(this, "录入成功");//提示成功
//清空文本框
jtfnum.setText("");
jtfname.setText("");
jtfbp.setText("");
jtfmp.setText("");
}catch(Exception ex){
//当输入不符合规范时 , 提示错误
JOptionPane.showMessageDialog(this, "请输入正确的数据:\n工号整型,工资浮点型","录入错误",JOptionPane.ERROR_MESSAGE);
}
}
}
//定义的文件路径
final static String FILE_PATH = "employee.dat";
public void writeToFile(Emp emp) {//IO操作,追加写入
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(new File(FILE_PATH), true));//为true表示追加
bw.write(emp.toString());//写入员工信息
bw.newLine();//换行
} catch (IOException e) {
e.printStackTrace();
}finally{
if(bw!=null){
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
测试类
public class EmpTest {
public static void main(String[] args) {
new EmpFrome();
}
}
测试效果
JAVA代码中文注释乱码
编码不对
1 先文件关了
2 在的项目试图中,右键文件,选择属性,改成utf-8 ,在打开文件看看 如果不成,关了,在改成别的编码
3 一般utf-8 gbk gb2312 这几种编码都试试就差不多了
ivate String name;//姓名 private double basicPay;//基本工资 private double meritPay;//绩效工资 public Emp(){//无参数构造器 } public Emp(int num, String name
段),以及注解的时效(运行时、或者源码中有效)。 2、要获取注解的信息,必须通过Java的反射技术来获取Annotation对象,因为你除此之外没有别的获取注解对象的