您的位置:首页 > 其它

反射机制的应用举例

2009-09-13 01:47 246 查看
/*
* 本程序演示了反射机制的一些使用方法。
* 所有反射操作的入口点都是 java.lang.Class。
* 通过java.lang.Class,我们可以得到关于类的所有内容,包括构造函数、属性和方法,而Java都有这些内容的数据类型,这些数据类型里有相应的方法,从而可以访问构造函数、属性和方法等内容,实现反射机制。
*/
package com.lwj.demo;

import java.lang.reflect.*;

public class ReflectDemo{
public static void main(String[] args) throws Exception {

//Class<?> objClass = java.lang.Character.class;
//Class<?> objClass = Character.class;
Class<?> objClass = new Character('a').getClass();//以上三条语句演示了如何通过类和对象得到Class Objects
System.out.println("类名:" +objClass.getName()+"/n");//返回类的全名(包括所在的包)

printClasses(objClass);//打印其中的member interfaces, classes, or enums

Constructor<?>[] cs=objClass.getDeclaredConstructors();
System.out.println(cs.length+"个构造函数:");
printMembers(cs);

Field[] fs=objClass.getDeclaredFields();
System.out.println(fs.length+"个属性:");
printMembers(fs);

Method[] ms=objClass.getDeclaredMethods();
System.out.println(ms.length+"个方法:");
printMembers(ms);
}

private static void printClasses(Class<?> c) {
System.out.format("Classes:%n");
Class<?>[] clss = c.getDeclaredClasses();
for (Class<?> cls : clss)
System.out.format(" %s%n", cls.getCanonicalName());
if (clss.length == 0)
System.out.format(" -- No member interfaces, classes, or enums --%n");
System.out.format("%n");
}

public static void printMembers(Member[] mbrs){
for (Member mbr : mbrs) {
if (mbr instanceof Field)
System.out.format(" %s%n", ((Field)mbr).toGenericString());
else if (mbr instanceof Constructor<?>)
System.out.format(" %s%n", ((Constructor<?>)mbr).toGenericString());
else if (mbr instanceof Method)
System.out.format(" %s%n", ((Method)mbr).toGenericString());
}
}

}

运行结果为:

类名:java.lang.Character

Classes:
java.lang.Character.CharacterCache
java.lang.Character.Subset
java.lang.Character.UnicodeBlock

1个构造函数:
public java.lang.Character(char)
70个属性:
public static final int java.lang.Character.MIN_RADIX
public static final int java.lang.Character.MAX_RADIX
public static final char java.lang.Character.MIN_VALUE
public static final char java.lang.Character.MAX_VALUE
public static final java.lang.Class<java.lang.Character> java.lang.Character.TYPE
public static final byte java.lang.Character.UNASSIGNED
public static final byte java.lang.Character.UPPERCASE_LETTER
public static final byte java.lang.Character.LOWERCASE_LETTER
public static final byte java.lang.Character.TITLECASE_LETTER
public static final byte java.lang.Character.MODIFIER_LETTER
public static final byte java.lang.Character.OTHER_LETTER
public static final byte java.lang.Character.NON_SPACING_MARK
public static final byte java.lang.Character.ENCLOSING_MARK
public static final byte java.lang.Character.COMBINING_SPACING_MARK
public static final byte java.lang.Character.DECIMAL_DIGIT_NUMBER
public static final byte java.lang.Character.LETTER_NUMBER
public static final byte java.lang.Character.OTHER_NUMBER
public static final byte java.lang.Character.SPACE_SEPARATOR
public static final byte java.lang.Character.LINE_SEPARATOR
public static final byte java.lang.Character.PARAGRAPH_SEPARATOR
public static final byte java.lang.Character.CONTROL
public static final byte java.lang.Character.FORMAT
public static final byte java.lang.Character.PRIVATE_USE
public static final byte java.lang.Character.SURROGATE
public static final byte java.lang.Character.DASH_PUNCTUATION
public static final byte java.lang.Character.START_PUNCTUATION
public static final byte java.lang.Character.END_PUNCTUATION
public static final byte java.lang.Character.CONNECTOR_PUNCTUATION
public static final byte java.lang.Character.OTHER_PUNCTUATION
public static final byte java.lang.Character.MATH_SYMBOL
public static final byte java.lang.Character.CURRENCY_SYMBOL
public static final byte java.lang.Character.MODIFIER_SYMBOL
public static final byte java.lang.Character.OTHER_SYMBOL
public static final byte java.lang.Character.INITIAL_QUOTE_PUNCTUATION
public static final byte java.lang.Character.FINAL_QUOTE_PUNCTUATION
static final int java.lang.Character.ERROR
public static final byte java.lang.Character.DIRECTIONALITY_UNDEFINED
public static final byte java.lang.Character.DIRECTIONALITY_LEFT_TO_RIGHT
public static final byte java.lang.Character.DIRECTIONALITY_RIGHT_TO_LEFT
public static final byte java.lang.Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC
public static final byte java.lang.Character.DIRECTIONALITY_EUROPEAN_NUMBER
public static final byte java.lang.Character.DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR
public static final byte java.lang.Character.DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR
public static final byte java.lang.Character.DIRECTIONALITY_ARABIC_NUMBER
public static final byte java.lang.Character.DIRECTIONALITY_COMMON_NUMBER_SEPARATOR
public static final byte java.lang.Character.DIRECTIONALITY_NONSPACING_MARK
public static final byte java.lang.Character.DIRECTIONALITY_BOUNDARY_NEUTRAL
public static final byte java.lang.Character.DIRECTIONALITY_PARAGRAPH_SEPARATOR
public static final byte java.lang.Character.DIRECTIONALITY_SEGMENT_SEPARATOR
public static final byte java.lang.Character.DIRECTIONALITY_WHITESPACE
public static final byte java.lang.Character.DIRECTIONALITY_OTHER_NEUTRALS
public static final byte java.lang.Character.DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING
public static final byte java.lang.Character.DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE
public static final byte java.lang.Character.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING
public static final byte java.lang.Character.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE
public static final byte java.lang.Character.DIRECTIONALITY_POP_DIRECTIONAL_FORMAT
public static final char java.lang.Character.MIN_HIGH_SURROGATE
public static final char java.lang.Character.MAX_HIGH_SURROGATE
public static final char java.lang.Character.MIN_LOW_SURROGATE
public static final char java.lang.Character.MAX_LOW_SURROGATE
public static final char java.lang.Character.MIN_SURROGATE
public static final char java.lang.Character.MAX_SURROGATE
public static final int java.lang.Character.MIN_SUPPLEMENTARY_CODE_POINT
public static final int java.lang.Character.MIN_CODE_POINT
public static final int java.lang.Character.MAX_CODE_POINT
private final char java.lang.Character.value
private static final long java.lang.Character.serialVersionUID
private static final int java.lang.Character.FAST_PATH_MAX
public static final int java.lang.Character.SIZE
static final boolean java.lang.Character.$assertionsDisabled
86个方法:
public static boolean java.lang.Character.isJavaIdentifierStart(char)
public static boolean java.lang.Character.isJavaIdentifierStart(int)
public static boolean java.lang.Character.isJavaIdentifierPart(int)
public static boolean java.lang.Character.isJavaIdentifierPart(char)
public int java.lang.Character.hashCode()
public static char java.lang.Character.reverseBytes(char)
public boolean java.lang.Character.equals(java.lang.Object)
public int java.lang.Character.compareTo(java.lang.Object)
public int java.lang.Character.compareTo(java.lang.Character)
public java.lang.String java.lang.Character.toString()
public static java.lang.String java.lang.Character.toString(char)
public static int java.lang.Character.charCount(int)
public static int java.lang.Character.codePointAt(char[],int,int)
public static int java.lang.Character.codePointAt(java.lang.CharSequence,int)
public static int java.lang.Character.codePointAt(char[],int)
static int java.lang.Character.codePointAtImpl(char[],int,int)
public static int java.lang.Character.codePointBefore(java.lang.CharSequence,int)
public static int java.lang.Character.codePointBefore(char[],int)
public static int java.lang.Character.codePointBefore(char[],int,int)
static int java.lang.Character.codePointBeforeImpl(char[],int,int)
public static int java.lang.Character.codePointCount(char[],int,int)
public static int java.lang.Character.codePointCount(java.lang.CharSequence,int,int)
static int java.lang.Character.codePointCountImpl(char[],int,int)
public static int java.lang.Character.offsetByCodePoints(java.lang.CharSequence,int,int)
public static int java.lang.Character.offsetByCodePoints(char[],int,int,int,int)
static int java.lang.Character.offsetByCodePointsImpl(char[],int,int,int,int)
public static int java.lang.Character.toChars(int,char[],int)
public static char[] java.lang.Character.toChars(int)
public static int java.lang.Character.toLowerCase(int)
public static char java.lang.Character.toLowerCase(char)
static void java.lang.Character.toSurrogates(int,char[],int)
public static char java.lang.Character.toUpperCase(char)
public static int java.lang.Character.toUpperCase(int)
static char[] java.lang.Character.toUpperCaseCharArray(int)
static int java.lang.Character.toUpperCaseEx(int)
public static java.lang.Character java.lang.Character.valueOf(char)
public static int java.lang.Character.getType(int)
public static int java.lang.Character.getType(char)
public static boolean java.lang.Character.isHighSurrogate(char)
public static boolean java.lang.Character.isLowSurrogate(char)
public static boolean java.lang.Character.isValidCodePoint(int)
public char java.lang.Character.charValue()
public static int java.lang.Character.digit(int,int)
public static int java.lang.Character.digit(char,int)
public static char java.lang.Character.forDigit(int,int)
public static byte java.lang.Character.getDirectionality(int)
public static byte java.lang.Character.getDirectionality(char)
public static int java.lang.Character.getNumericValue(int)
public static int java.lang.Character.getNumericValue(char)
private static int java.lang.Character.getPlane(int)
public static boolean java.lang.Character.isDefined(char)
public static boolean java.lang.Character.isDefined(int)
public static boolean java.lang.Character.isDigit(char)
public static boolean java.lang.Character.isDigit(int)
public static boolean java.lang.Character.isISOControl(int)
public static boolean java.lang.Character.isISOControl(char)
public static boolean java.lang.Character.isIdentifierIgnorable(char)
public static boolean java.lang.Character.isIdentifierIgnorable(int)
public static boolean java.lang.Character.isJavaLetter(char)
public static boolean java.lang.Character.isJavaLetterOrDigit(char)
public static boolean java.lang.Character.isLetter(int)
public static boolean java.lang.Character.isLetter(char)
public static boolean java.lang.Character.isLetterOrDigit(int)
public static boolean java.lang.Character.isLetterOrDigit(char)
public static boolean java.lang.Character.isLowerCase(int)
public static boolean java.lang.Character.isLowerCase(char)
public static boolean java.lang.Character.isMirrored(int)
public static boolean java.lang.Character.isMirrored(char)
public static boolean java.lang.Character.isSpace(char)
public static boolean java.lang.Character.isSpaceChar(int)
public static boolean java.lang.Character.isSpaceChar(char)
public static boolean java.lang.Character.isSupplementaryCodePoint(int)
public static boolean java.lang.Character.isSurrogatePair(char,char)
public static boolean java.lang.Character.isTitleCase(char)
public static boolean java.lang.Character.isTitleCase(int)
public static boolean java.lang.Character.isUnicodeIdentifierPart(int)
public static boolean java.lang.Character.isUnicodeIdentifierPart(char)
public static boolean java.lang.Character.isUnicodeIdentifierStart(int)
public static boolean java.lang.Character.isUnicodeIdentifierStart(char)
public static boolean java.lang.Character.isUpperCase(char)
public static boolean java.lang.Character.isUpperCase(int)
public static boolean java.lang.Character.isWhitespace(char)
public static boolean java.lang.Character.isWhitespace(int)
public static int java.lang.Character.toCodePoint(char,char)
public static int java.lang.Character.toTitleCase(int)
public static char java.lang.Character.toTitleCase(char)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: