Java反射机制
Java中提供了Class类,可以通过Class类获取类的定义信息,包括包名、类名、类上的注释(Annotation)、类的修饰符、父类、继承的接口、构造方法、成员变量和成员方法。这些信息分别使用java.lang.annotation.Annotation、 java.lang.reflect.Constructor、java.lang.reflect.Field、java.lang.reflect.Method、java.lang.reflect.Modifier来表示。可以动态调用方法和属性。下面的例子展示了基本用法。
package ch5;
import static java.lang.System.out;
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class ClassInfo {
public static void main(String args[]){
Class c=String.class;
// 1、得到所有方法
Method[] methods = c.getMethods();
// 2、得到某个方法
try{
// 第一个参数是方法的名字,后面的参数是参数的类型
Method find = c.getMethod("indexOf", int.class);
// 动态调用,第一个参数是对象,后面的参数是方法的实参(采用了变长参数)
System.out.println(find.invoke("hello,welcome!",'c'));
}catch(Exception e){
e.printStackTrace();
}
// 3、得到类的名字
out.println("类的名字为:"+c.getName());
// 4、得到包名,通过Package对象处理
System.out.println("包名为:"+c.getPackage().getName());
// 5、得到修饰符,通过Modifier处理
int modifier = c.getModifiers();
if(Modifier.isPublic(modifier)){
System.out.println("类是公有的!");
}
if(Modifier.isPrivate(modifier)){
System.out.println("类是私有的!");
}
if(Modifier.isFinal(modifier)){
System.out.println("类是最终类!");
}
// 6、得到父类
System.out.prin
相关文档:
2008 年 6 月 24 日
原文地址: http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0806wangys/
本文介绍 IBM FileNet P8 4.0 Platform 提供的 Content Java API。首先对 FileNet P8 Content Engine 和 API 进行概要介绍, 并说明了一些基本概念,随后详细介绍了 FileNet Content Engine提供的基于 EJB ......
1.简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。(15分)
a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型
b.逻辑操作不会产生短路
2.下面程序运行会发生什么结果?如果有错误,如何改正? (15分)
interface A{
int x = 0;
......
最近在开发过程中发现一个问题:Boolean类型的值无法在flex和java间传递,经过一段研究发现,问题出现在Boolean类型的getter和setter方法上。
按照javabean的规范,小布尔类型的getter是以is做前缀的,但是大布尔类型的getter就成了以get为前缀了(大布尔作为引用类型,已经被视为普通 ......
1.
何时需要重写
equals()
当一个类有自己特有的“逻辑相等”概念(不同于对象身份的概念)。
2.
设计
equals()
[1]
使用
instanceof
操作符检查“实参是否为正确的类型”。
[2]
对于类中的每一个“关键域”,检查实参中的域与当前对象中对应的域值。
[2.1]
对于非
float
和 ......
0 引言
从控制台中读取数据是一个比较常用的功能,在 JDK 5.0 以前的版本中的实现是比较复杂的,需要手工处理系统的输入流。有意思的是,从 JDK 5.0 版本开始,能从控制台中输入数据的方法每增加一个版本号,就有一种新增的方法,这也增加了选择的种类,可以依据不同的要求来进行选择。下面来看一下 ......