1. 利用注释和反射 实现程序的方法按顺序执行
Order.java
----
import java.lang.annotation.*;
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Order {
int value();
}
-----
Tarena.java
public class Tarena {
@Order(1)
public void studyUnix(){
System.out.println("Unix");
}
@Order(8)
public void studyEJB(){
System.out.println("EJB");
}
@Order(2)
public void studyCoreCpp(){
System.out.println("C++");
}
@Order(3)
public void studyUnixCpp(){
System.out.println("Unix C++");
}
@Order(6)
public void studyHibernate(){
System.out.println("Hibernate");
}
@Order(5)
public void studyJDBC(){
System.out.println("JDBC");
}
@Order(7)
public void studyJavaWeb(){
System.out.println("Servlet JSP Struts");
}
@Order(4)
public void studyCoreJava(){
System.out.println("CoreJava");
}
}
------
RunByOrder.java
import java.lang.reflect.*;
import java.util.*;
public class RunByOrder {
public static void main(String[] args) throws Exception{
Class c=Class.forName("Tarena");
Object o=c.newInstance();
TreeMap tm=new TreeMap();
Method[] ms=c.getMethods();
for(Method m:ms){
if (m.isAnnotationPresent(Order.class)){
Order order=m.getAnnotation(Order.class);
int value=order.value();
tm.put(value,m);
}
}
Set s=tm.keySet();
for(Integer i:s){
Method m=tm.get(i);
m.invoke(o);
}
}
}
====================
2. 注释的属性的写法,与使用
-----------------
Test.java
import java.lang.annotation.*;
@Target(value={ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Test {
String parameter() default "liucy";
}
/*
*@interface A1{
* A2[] value();
*}
*@interface A2{
* String[] value();
*}
*@A1({@A2({"A","B"}),@A2({"C","D"})})
*public void m(){}
*
*
*
*/
-----------
MyClass.java
public class MyClass {
//要测 参数:"liucy"
@Test
public void m1(String s){
System.out.println(s+" m1");
}
public void m2(String s){
System.out.println(s+" m2");
}
//要测 参数:"tangliang"
@Test(parameter="tangliang")
public void m3(String s){
System.out.println(s+" m3");
}
}
--------------
Test1.java
public class Test1 {
public static void main(String[] args) {
MyClass mc=new MyClass();
mc.m1("liucy");
mc.m3("tangliang");
}
}
==============
3. 利用注释及其属性来调用这个类中的方法
--------------
TestEngin.java
import java.lang.reflect.*;
public class TestEngine {
public static void main(String[] args) throws Exception{
//构造对象
String className="MyClass2";
Class c=Class.forName(className);
Object o=c.newInstance();
//获得方法对象
Method[] ms=c.getMethods();
for(Method m:ms){
//判断Test注释在这个方法上是否存在
if (m.isAnnotationPresent(Test.class)){
//获得Test注释对象
Test t=m.getAnnotation(Test.class);
//获得Test注释的parameter属性
String p=t.parameter();
//调用这个方法
m.invoke(o,p);
}
}
}
}
-------------
Test.java
import java.lang.annotation.*;
@Target(value={ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Test {
String parameter() default "liucy";
}
/*
*@interface A1{
* A2[] value();
*}
*@interface A2{
* String[] value();
*}
*@A1({@A2({"A","B"}),@A2({"C","D"})})
*public void m(){}
*
*
*
*/
------------
MyClass.java
public class MyClass2 {
@Test(parameter="Hiloo")
public void p1(String s){
System.out.println("p1 "+s);
}
@Test(parameter="Chenzq")
public void p2(String s){
System.out.println("p2 "+s) ;
}
}
分享到:
相关推荐
包括:多线程、集合框架、网络api、数据库编程、分布式对象等,深入探究了swing、java 2d api、javabean、java安全模式、xml、注释、元数据等主题,同时涉及本地方法、国际化以及jdk 5.0的内容。本书适合软件开发...
包括:多线程、集合框架、网络API、数据库编程、分布式对象等,深入探究了Swing、Java 2D API、JavaBean、Java安全模式、XML、注释、元数据等主题,同时涉及本地方法、国际化以及JDK 5.0的内容。本书适合软件开发...
包括:多线程、集合框架、网络API、数据库编程、分布式对象等,深入探究了Swing、Java 2D API、JavaBean、Java安全模式、XML、注释、元数据等主题,同时涉及本地方法、国际化以及JDK 5.0的内容。本书适合软件开发...
在软件开发过程中,不同的项目可能对Java运行环境有着不同的需求,比如一个项目需要使用JDK 1.4 和 Tomcat 5.0,而另一个项目则需要使用JDK 1.5 和 Tomcat 6.0。这种情况下,单一的Java Home配置显然无法满足所有...
包括:多线程、集合框架、网络API、数据库编程、分布式对象等,深入探究了Swing、Java 2D API、JavaBean、Java安全模式、XML、注释、元数据等主题,同时涉及本地方法、国际化以及JDK 5.0的内容。本书适合软件开发...
对于Weblogic 9.0,推荐使用JDK 5.0,而Weblogic 8则要求JDK 1.4版本。这些版本的差异主要是为了确保服务器和EJB组件之间的兼容性。 在EJB的编码阶段,给出了一段SessionBean的示例代码。SessionBean是EJB的一种...
这里我们将详细探讨JDK 1.4、1.5(也称为Java 5.0)和1.6(也称为Java 6.0)之间的主要差异和新特性。 1. **JDK 1.5的新特性** - **泛型**:泛型是Java 5引入的一项重大改进,它允许在定义类、接口和方法时指定...
以上内容涵盖了 Java 基础加强学习的关键知识点,包括 Eclipse 的使用、Junit、JDK 5.0 新特性、反射机制以及泛型的定义和使用。通过掌握这些核心概念和技术,可以帮助开发者更好地理解和运用 Java 语言,提高编程...
深入探究了Swing、Java 2D API、JavaBean、Java安全模式、XML、注释、元数据等主题,同时涉及本地方法、国际化以及JDK 5.0的内容。本书适合软件开发人员、高等院校学生和教师参考。. <br>本书包括Java 2平台标准...
深入探究了Swing、Java 2D API、JavaBean、Java安全模式、XML、注释、元数据等主题,同时涉及本地方法、国际化以及JDK 5.0的内容。本书适合软件开发人员、高等院校学生和教师参考。. <br>本书包括Java 2平台标准...
深入探究了Swing、Java 2D API、JavaBean、Java安全模式、XML、注释、元数据等主题,同时涉及本地方法、国际化以及JDK 5.0的内容。本书适合软件开发人员、高等院校学生和教师参考。. <br>本书包括Java 2平台标准...
Java JDK实例宝典源文件是针对Java初学者和开发者的一份宝贵资源,它包含了大量基于J2SE 5.0版本的实战示例,旨在帮助读者深入理解和掌握Java编程技术。JDK(Java Development Kit)是Java编程的核心工具集,包含...
此外,还区分了不同类型的规范,例如“Java5.0”表示该规范是为JDK 5.0特别设计的。 需要注意的是,文档中提到的“CC”、“FB”和“Eclipse”等图标右上角带有“*”的表示该规范不能被对应的工具完全检查,使用时应...
- **JDK1.5 (JDK5.0)**: 引入了泛型、枚举等新特性。 - **JDK6.0**: 改进了GUI设计工具,增强了Java SE的安全性。 - **JDK7.0**: 增加了多核处理器的支持,改进了垃圾回收机制。 - **JDK8.0**: 当前最广泛使用的...
在本教程中,选择了JDK 1.4和Tomcat 5.0作为示例环境。Tomcat服务器可以从官方网站下载,安装过程中涉及设置环境变量,如CLASSPATH、JAVA_HOME和TOMCAT_HOME,并将Tomcat添加到PATH中。另外,`Server.xml`文件是配置...
1. **ORM映射元数据**:支持XML和JDK 5.0注释两种元数据形式,用以描述对象和数据库表之间的映射关系。 2. **Java持久化API**:提供一系列API用于操作实体对象,实现数据的增删改查(CRUD)操作。 3. **查询语言(JPQL)...
该例子下载以后在Eclipse中导入,接着下载MySQL 5.0的驱动,然后参见实体类的注释,上面有数据库脚本,可以方便你运行该示例。代码几乎一行一注释,非常详细的说明了使用JPA的步骤,是学习JPA编程的好例子。
我们可以把经过 Jocky编译的类文件以UltraEdit打开,可以发现在第8个字节上(类文件的major version)的数值是0x30,即十进制的48,这是JDK 1.4所能够理解的类文件版本(JDK 5.0默认编译的类文件版本是49)。前提是:应用...
JDK5.0及更高版本中,如果没有设置`classpath`,JVM会自动将其设置为`.`,即当前目录。 配置`path`环境变量是为了在任意目录下可以使用`javac`和`java`命令。而`classpath`的配置则关乎Java虚拟机查找类文件的能力...