Java注释(Annotation)详解

     注释:在一个类中可以有多个,类似于一个类可以有多个实例;
     注释类型:是注释使用的结构,类似于类,仅有一个版本,因此多个注释可能使用相同的注释类型
     jdk默认的三个注释:
       1.Override注释:仅用于方法(不可用于类、包的生命或其他),指明注释的方法将覆盖超类中的方法(如果覆盖父类的方法而没有注
释就无法编译该类),注释还能确保注释父类方法的拼写是正确(错误的编写,编译器不认为是子类的新方法,而会报错)
       2.@Deprecated注释:对不应再使用的方法进行注释,与正在声明为过时的方法放在同一行。使用被     Deprecated注释的方法,编译器会
提示方法过时警告(”Warring”)
       3.@SuppressWarnings注释:单一注释,可以通过数组提供变量,变量值指明要阻止的特定类型警告(忽略某些警告)。数组中的变量指明要阻止的警告@SuppressWarnings(value={“unchecked”,”fallthrough”}))
Read more…

ANT入门

一、准备工作

  1.安装ant,将其解压在某个分区中,如c:\ant

  2.在环境变量PATH中添加c:\ant\bin目录

  3.在cmd中测试ant,看提示是否出现,如图:

cmd

二、简单测试

  1.新建一个测试目录,如d:\hello,在其下建立子目录src,以便放源文件

  2.新建一个测试源文件HelloWorld.java,放在src目录下

package cn.hrmzone;
public class HelloWorld{
	public static void main(String[] args) {
		System.out.println("HelloWorld");
	}
}

Read more…

Java高级特性–反射

 Class 表示类的类,描述一类事物,规定类应该有什么属性,不应该有什么属性。但是不要求有什么属性。
 2.Class表示字节码的抽象,不知直接去构造(new Class())
 3.Person p1=new Person(),虚拟机编译时,首先需要加载Person.class文件到内存中
 4.Class c=Person.class,表示内存中实实在在的一堆字节码,p1代表那一堆字节码生成的对象。Class就表示字节码的抽象,c如上所述,表示的是字节码的引用
 5.Field:代表类的成员变量
 6.Constructor:代表类的构造方法
 7.Method:代表类的方法

package reflectclass;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class StudentTest {
	/**
	 * @param args
	 * @throws Exception 
	 * @throws InstantiationException 
	 */
 
	public Object create(Object obj) throws Exception {
		Class< ?> classType=obj.getClass();
		System.out.println("the class type:"+classType.getName());
		Object student=classType.newInstance();
		student=classType.getConstructor(null).newInstance(null);
//		student=classType.getConstructor(new Class[]{}).newInstance(new Object[]{});
		Field fields[]=classType.getDeclaredFields();
		for(Field f:fields) {
			Field field=f;
			String fieldName=field.getName();
			String firstName=fieldName.substring(0,1).toUpperCase();
			String getMethodName="get"+firstName+fieldName.substring(1);
			String setMethodName="set"+firstName+fieldName.substring(1);
			Method getMethod=classType.getMethod(getMethodName, new Class[]{});
			Method setMethod=classType.getMethod(setMethodName, new Class[]{field.getType()});
			Object value=getMethod.invoke(obj, new Object[]{});
			System.out.println("value:"+value);
			setMethod.invoke(student, new Object[]{value});
 
		}
 
		return student;
	}
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		Student s=new Student("student",23);
		s.setId(1);
		StudentTest st=new StudentTest();
		st.create(s);
	}
 
}

Read more…

Java高级特性–枚举(Enum)

枚举就是预先定义一组常量,并作为一个新的类型,就是类似一个常量类。从定义上来看,枚举很想特殊的class,实际上枚举的声明定义就是一个类。先看看枚举类与常量类的区别。
枚举类:

package enumdemo;
public enum Week {
	monday,
	tuesday,
	wedensday,
	thursday,
	friday,
	saturday,
	sunday
}

常量类:

package enumdemo;
 
public class StaticClass {
	public static final int monday=1;
	public static final int tuesday=2;
	public static final int wedensday=3;
	public static final int thursday=4;
	public static final int friday=5;
	public static final int saturday=6;
	public static final int sunday=7;
}

Read more…

Java高级特性–泛型

泛型是java5新增的特性之一,在某种程度上能增加代码的灵活性。它的作用在于对类型进行抽象,废话少说,先看个例子。 在没有泛型之前,如果我们要写一段代码,针对不同的基本数据类型(String,IntegerDouble,Float等),如:

public class StringObject {
		private String str;
		public void setString(String str) {
			this.str=str;
		}
		public String getString() {
			return str;
		}
	}

如果还有其他的基本数字类型,需要些写同样的类。当然,还有一种方法,就是将所有的基本类型抽象成Object,如下:

package generics;
	public class ObjectTest {
		private Object x;
		public void setX(Object x) {
			this.x=x;
		}
		public Object getX() {
			return x;
		}
	}
package generics;
	public class ObjectTestDemo {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ObjectTest strFoo=new ObjectTest();
		strFoo.setX("strFoo");
 
		ObjectTest intFoo=new ObjectTest();
		intFoo.setX(new Integer(11));
 
		ObjectTest douFoo=new ObjectTest();
		douFoo.setX(new Double(1.33));
 
		String str=(String)strFoo.getX();
		System.out.println(str);
		Integer in = (Integer)intFoo.getX();
		System.out.println(in);
		Double dou = (Double)douFoo.getX();
		System.out.println(dou);
		}
 
	}

Read more…

Go back to top