在论坛看到的一个反射的例子
2016-03-06 21:46
337 查看
在论坛上看到一篇关于反射的例子,觉得很不错,就转过来了
以上代码是打印出String类的结构,输出如下:
package java.lang;
public final class String implements Serializable,Comparable,CharSequence{
private final char[] value;
private int hash;
private static final long serialVersionUID;
private static final ObjectStreamField[] serialPersistentFields;
public static final Comparator CASE_INSENSITIVE_ORDER;
public boolean equals(Object args) {
… …
}
public String toString() {
… …
}
public int hashCode() {
… …
}
public int compareTo(String args) {
… …
}
public volatile int compareTo(Object args) {
… …
}
public int indexOf(String args,int args) {
… …
}
public int indexOf(String args) {
… …
}
public int indexOf(int args,int args) {
… …
}
public int indexOf(int args) {
… …
}
static int indexOf(char[] args,int args,int args,char[] args,int args,int args,int args) {
… …
}
static int indexOf(char[] args,int args,int args,String args,int args) {
… …
}
public static String valueOf(int args) {
… …
}
public static String valueOf(long args) {
… …
}
public static String valueOf(float args) {
… …
}
public static String valueOf(boolean args) {
… …
}
public static String valueOf(char[] args) {
… …
}
public static String valueOf(char[] args,int args,int args) {
… …
}
public static String valueOf(Object args) {
… …
}
public static String valueOf(char args) {
… …
}
public static String valueOf(double args) {
… …
}
public char charAt(int args) {
… …
}
private static void checkBounds(byte[] args,int args,int args) {
… …
}
public int codePointAt(int args) {
… …
}
public int codePointBefore(int args) {
… …
}
public int codePointCount(int args,int args) {
… …
}
public int compareToIgnoreCase(String args) {
… …
}
public String concat(String args) {
… …
}
public boolean contains(CharSequence args) {
… …
}
public boolean contentEquals(CharSequence args) {
… …
}
public boolean contentEquals(StringBuffer args) {
… …
}
public static String copyValueOf(char[] args) {
… …
}
public static String copyValueOf(char[] args,int args,int args) {
… …
}
public boolean endsWith(String args) {
… …
}
public boolean equalsIgnoreCase(String args) {
… …
}
public static transient String format(Locale args,String args,Object[] args) {
… …
}
public static transient String format(String args,Object[] args) {
… …
}
public void getBytes(int args,int args,byte[] args,int args) {
… …
}
public byte[] getBytes(Charset args) {
… …
}
public byte[] getBytes(String args) throws UnsupportedEncodingException{
… …
}
public byte[] getBytes() {
… …
}
public void getChars(int args,int args,char[] args,int args) {
… …
}
void getChars(char[] args,int args) {
… …
}
private int indexOfSupplementary(int args,int args) {
… …
}
public native String intern() {
… …
}
public boolean isEmpty() {
… …
}
public static transient String join(CharSequence args,CharSequence[] args) {
… …
}
public static String join(CharSequence args,Iterable args) {
… …
}
public int lastIndexOf(int args) {
… …
}
public int lastIndexOf(String args) {
… …
}
static int lastIndexOf(char[] args,int args,int args,String args,int args) {
… …
}
public int lastIndexOf(String args,int args) {
… …
}
public int lastIndexOf(int args,int args) {
… …
}
static int lastIndexOf(char[] args,int args,int args,char[] args,int args,int args,int args) {
… …
}
private int lastIndexOfSupplementary(int args,int args) {
… …
}
public int length() {
… …
}
public boolean matches(String args) {
… …
}
private boolean nonSyncContentEquals(AbstractStringBuilder args) {
… …
}
public int offsetByCodePoints(int args,int args) {
… …
}
public boolean regionMatches(int args,String args,int args,int args) {
… …
}
public boolean regionMatches(boolean args,int args,String args,int args,int args) {
… …
}
public String replace(char args,char args) {
… …
}
public String replace(CharSequence args,CharSequence args) {
… …
}
public String replaceAll(String args,String args) {
… …
}
public String replaceFirst(String args,String args) {
… …
}
public String[] split(String args) {
… …
}
public String[] split(String args,int args) {
… …
}
public boolean startsWith(String args,int args) {
… …
}
public boolean startsWith(String args) {
… …
}
public CharSequence subSequence(int args,int args) {
… …
}
public String substring(int args) {
… …
}
public String substring(int args,int args) {
… …
}
public char[] toCharArray() {
… …
}
public String toLowerCase(Locale args) {
… …
}
public String toLowerCase() {
… …
}
public String toUpperCase() {
… …
}
public String toUpperCase(Locale args) {
… …
}
public String trim() {
… …
}
}
package design.test; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; public class ReflectionTest { @SuppressWarnings("rawtypes") public static void main(String[] args) { Class c=null; try { //实例化一个String对象 c=Class.forName("java.lang.String"); //打印包名 System.out.println("package "+c.getPackage().getName()+";"); //打印类修饰符 System.out.print(Modifier.toString(c.getModifiers())+" "); //打印类名 System.out.print("class "+c.getSimpleName()+" "); //打印父类 if (c.getSuperclass()!=Object.class) { System.out.print("extends " + c.getSuperclass().getSimpleName()); } //打印接口 Class[] inters=c.getInterfaces(); if(inters.length>0){ System.out.print("implements "); for(int i=0;i<inters.length;i++){ System.out.print(inters[i].getSimpleName()); if(i<inters.length-1){ System.out.print(","); } } } System.out.println("{"); //打印字段 printFields(c); //打印方法 printMethods(c); System.out.println("}"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } /** * 打印字段 * @param c */ @SuppressWarnings("rawtypes") public static void printFields(Class c){ Field[] field=c.getDeclaredFields(); if(field.length>0){ for(int i=0;i<field.length;i++){ System.out.println(Modifier.toString(field[i].getModifiers())+" "+field[i].getType().getSimpleName()+" "+field[i].getName()+";"); } } } /** * 打印方法 * @param c */ @SuppressWarnings("rawtypes") public static void printMethods(Class c){ Method[] method=c.getDeclaredMethods(); if(method.length>0){ for(int i=0;i<method.length;i++){ Class[] parameter=method[i].getParameterTypes(); System.out.print(Modifier.toString(method[i].getModifiers())+" "+method[i].getReturnType().getSimpleName()+" "+method[i].getName()+"("); for(int j=0;j<parameter.length;j++){ System.out.print(parameter[j].getSimpleName()+" args"); if(j!=parameter.length-1){ System.out.print(","); } } System.out.print(") "); Class exception[]=method[i].getExceptionTypes(); if (exception.length>0) { System.out.print("throws "); for (int j = 0; j < exception.length; j++) { System.out.print(exception[j].getSimpleName()); } } System.out.println("{"); System.out.println("\t... ..."); System.out.println("}"); } } } }
以上代码是打印出String类的结构,输出如下:
package java.lang;
public final class String implements Serializable,Comparable,CharSequence{
private final char[] value;
private int hash;
private static final long serialVersionUID;
private static final ObjectStreamField[] serialPersistentFields;
public static final Comparator CASE_INSENSITIVE_ORDER;
public boolean equals(Object args) {
… …
}
public String toString() {
… …
}
public int hashCode() {
… …
}
public int compareTo(String args) {
… …
}
public volatile int compareTo(Object args) {
… …
}
public int indexOf(String args,int args) {
… …
}
public int indexOf(String args) {
… …
}
public int indexOf(int args,int args) {
… …
}
public int indexOf(int args) {
… …
}
static int indexOf(char[] args,int args,int args,char[] args,int args,int args,int args) {
… …
}
static int indexOf(char[] args,int args,int args,String args,int args) {
… …
}
public static String valueOf(int args) {
… …
}
public static String valueOf(long args) {
… …
}
public static String valueOf(float args) {
… …
}
public static String valueOf(boolean args) {
… …
}
public static String valueOf(char[] args) {
… …
}
public static String valueOf(char[] args,int args,int args) {
… …
}
public static String valueOf(Object args) {
… …
}
public static String valueOf(char args) {
… …
}
public static String valueOf(double args) {
… …
}
public char charAt(int args) {
… …
}
private static void checkBounds(byte[] args,int args,int args) {
… …
}
public int codePointAt(int args) {
… …
}
public int codePointBefore(int args) {
… …
}
public int codePointCount(int args,int args) {
… …
}
public int compareToIgnoreCase(String args) {
… …
}
public String concat(String args) {
… …
}
public boolean contains(CharSequence args) {
… …
}
public boolean contentEquals(CharSequence args) {
… …
}
public boolean contentEquals(StringBuffer args) {
… …
}
public static String copyValueOf(char[] args) {
… …
}
public static String copyValueOf(char[] args,int args,int args) {
… …
}
public boolean endsWith(String args) {
… …
}
public boolean equalsIgnoreCase(String args) {
… …
}
public static transient String format(Locale args,String args,Object[] args) {
… …
}
public static transient String format(String args,Object[] args) {
… …
}
public void getBytes(int args,int args,byte[] args,int args) {
… …
}
public byte[] getBytes(Charset args) {
… …
}
public byte[] getBytes(String args) throws UnsupportedEncodingException{
… …
}
public byte[] getBytes() {
… …
}
public void getChars(int args,int args,char[] args,int args) {
… …
}
void getChars(char[] args,int args) {
… …
}
private int indexOfSupplementary(int args,int args) {
… …
}
public native String intern() {
… …
}
public boolean isEmpty() {
… …
}
public static transient String join(CharSequence args,CharSequence[] args) {
… …
}
public static String join(CharSequence args,Iterable args) {
… …
}
public int lastIndexOf(int args) {
… …
}
public int lastIndexOf(String args) {
… …
}
static int lastIndexOf(char[] args,int args,int args,String args,int args) {
… …
}
public int lastIndexOf(String args,int args) {
… …
}
public int lastIndexOf(int args,int args) {
… …
}
static int lastIndexOf(char[] args,int args,int args,char[] args,int args,int args,int args) {
… …
}
private int lastIndexOfSupplementary(int args,int args) {
… …
}
public int length() {
… …
}
public boolean matches(String args) {
… …
}
private boolean nonSyncContentEquals(AbstractStringBuilder args) {
… …
}
public int offsetByCodePoints(int args,int args) {
… …
}
public boolean regionMatches(int args,String args,int args,int args) {
… …
}
public boolean regionMatches(boolean args,int args,String args,int args,int args) {
… …
}
public String replace(char args,char args) {
… …
}
public String replace(CharSequence args,CharSequence args) {
… …
}
public String replaceAll(String args,String args) {
… …
}
public String replaceFirst(String args,String args) {
… …
}
public String[] split(String args) {
… …
}
public String[] split(String args,int args) {
… …
}
public boolean startsWith(String args,int args) {
… …
}
public boolean startsWith(String args) {
… …
}
public CharSequence subSequence(int args,int args) {
… …
}
public String substring(int args) {
… …
}
public String substring(int args,int args) {
… …
}
public char[] toCharArray() {
… …
}
public String toLowerCase(Locale args) {
… …
}
public String toLowerCase() {
… …
}
public String toUpperCase() {
… …
}
public String toUpperCase(Locale args) {
… …
}
public String trim() {
… …
}
}
相关文章推荐
- Android Native 绘图方法
- Java反射随记
- AS3中的反射(速记) 分析
- C#中struct和class的区别详解
- C# 反射(Reflection)的用处分析
- C#通过反射创建自定义泛型
- VBS ArrayList Class vbs中的数组类
- 大家看了就明白了css样式中类class与标识id选择符的区别小结
- 通俗易懂的C#之反射教程
- C#根据反射和特性实现ORM映射实例分析
- 深入了解PHP类Class的概念
- 深入反射生成数组的详解
- C#利用反射来判断对象是否包含某个属性的实现方法
- C#利用反射技术实现去掉按钮选中时的边框效果
- C#泛型和反射实例解析
- C# Dynamic关键字之:dynamic为什么比反射快的详解
- jquery 表单验证之通过 class验证表单不为空
- setAttribute 与 class冲突解决
- JavaScript中的类(Class)详细介绍
- javascript面向对象包装类Class封装类库剖析