反射修改私有成员变量
public class Homework01 { public static void main ( String [ ] args) throws IllegalAccessException , InstantiationException , NoSuchFieldException , NoSuchMethodException , InvocationTargetException { Class < PrivateTest > privateTestClass = PrivateTest . class ; PrivateTest privateTestObj = privateTestClass. newInstance ( ) ; Field name = privateTestClass. getDeclaredField ( "name" ) ; name. setAccessible ( true ) ; name. set ( privateTestObj, "天龙八部" ) ; Method getName = privateTestClass. getMethod ( "getName" ) ; Object invoke = getName. invoke ( privateTestObj) ; System . out. println ( "name属性值=" + invoke) ; }
} class PrivateTest { private String name = "hellokitty" ; public String getName ( ) { return name; }
}
反射和File
public class Homework02 { public static void main ( String [ ] args) throws ClassNotFoundException , NoSuchMethodException , IllegalAccessException , InvocationTargetException , InstantiationException { Class < ? > fileCls = Class . forName ( "java.io.File" ) ; Constructor < ? > [ ] declaredConstructors = fileCls. getDeclaredConstructors ( ) ; for ( Constructor < ? > declaredConstructor : declaredConstructors) { System . out. println ( "File构造器=" + declaredConstructor) ; } Constructor < ? > declaredConstructor = fileCls. getDeclaredConstructor ( String . class ) ; String fileAllPath = "e:\\mynew.txt" ; Object file = declaredConstructor. newInstance ( fileAllPath) ; Method createNewFile = fileCls. getMethod ( "createNewFile" ) ; createNewFile. invoke ( file) ; System . out. println ( file. getClass ( ) ) ; System . out. println ( "创建文件成功" + fileAllPath) ; }
}