如何获取
如何获取 public 类型的方法,不仅限于本类的方法还包括继承自父类的public方法
例1
package keeper;
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) {
//1.如何获取 public 不仅限于本类的方法还包括继承自父类的public方法
Class clazz=Student.class;
Method [] methods =clazz.getMethods();
for (Method method : methods) {
System.out.println(method.getName());
}
}
}
package keeper;
public class Student {
public static String name;
public void doHomework(int a,String [] sd) {
System.out.println(name+"fadfsf");
}
public Student() {
}
public Student(String name) {
this.name=name;
}
}
结果:
doHomework
wait
wait
wait
equals
toString
hashCode
getClass
notify
notifyAll
如何获取本类中的方法
例2
package keeper;
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) {
Class clazz=Student.class;
Method method;
try {
method = clazz.getMethod("doHomework");
System.out.println(method);
} catch (Exception e) {
e.printStackTrace();
}
}
}
package keeper;
public class Student {
public static String name;
public void doHomework() {
System.out.println(name+"fadfsf");
}
public Student() {
}
public Student(String name) {
this.name=name;
}
}
结果:
public void keeper.Student.doHomework()
例3
package keeper;
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args) {
Class clazz=Student.class;
Method [] methods =clazz.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method.getName());
}
}
}
package keeper;
public class Student {
public static String name;
public void doHomework() {
System.out.println(name+"fadfsf");
}
public Student() {
}
public Student(String name) {
this.name=name;
}
}
结果:
doHomework
获取信息
例4
package keeper;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class Test {
public static void main(String[] args) {
Class clazz=Student.class;
try {
Method method =clazz.getMethod("doHomework", Integer.TYPE,String[].class);
System.out.println(method.getDeclaringClass());
System.out.println(Modifier.toString(method.getModifiers()));
clazz =method .getReturnType();
System.out.println(clazz.getName());
System.out.println(method.getName());
Class [] clazzs =method.getParameterTypes();
for (Class str : clazzs) {
System.out.println(str.getName());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
package keeper;
public class Student {
public static String name;
public void doHomework(int a,String [] sd) {
System.out.println(name+"fadfsf");
}
public Student() {
}
public Student(String name) {
this.name=name;
}
}
结果:
class keeper.Student
public
void
doHomework
int
[Ljava.lang.String;
例5:
package keeper;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class Test {
public static void main(String[] args) {
Class clazz=Student.class;
try {
Method method =clazz.getDeclaredMethod("doHomework", Integer.TYPE,String[].class);
method.setAccessible(true);
Object object =method.invoke(new Student(), 1,new String[] {});
System.out.println(object);
} catch (Exception e) {
e.printStackTrace();
}
}
}
package keeper;
public class Student {
public static String name;
private void doHomework(int a,String [] sd) {
System.out.println(name+"fadfsf");
}
public Student() {
}
public Student(String name) {
this.name=name;
}
}
结果:
nullfadfsf
null
如何使用
属性
1.如何获取
a获取public(包含继承自父类的)级别属性
package keeper;
import java.lang.reflect.Field;
public class Test {
public static void main(String[] args) {
Class clazz=Student.class;
Field field;
try {
field = clazz.getField("name");
System.out.println(field.getName());
} catch (Exception e) {
e.printStackTrace();
}
}
}
package keeper;
public class Student {
public static String name;
private void doHomework(int a,String [] sd) {
System.out.println(name+"fadfsf");
}
public Student() {
}
public Student(String name) {
this.name=name;
}
}
结果:
name
b获取本类属性不区分权限
package keeper;
import java.lang.reflect.Field;
public class Test {
public static void main(String[] args) {
Class clazz=Student.class;
Field field;
try {
field = clazz.getDeclaredField("name");
System.out.println(field.getName());
} catch (Exception e) {
e.printStackTrace();
}
}
}
package keeper;
public class Student {
public static String name;
private void doHomework(int a,String [] sd) {
System.out.println(name+"fadfsf");
}
public Student() {
}
public Student(String name) {
this.name=name;
}
}
结果:
name
2.获取信息
package keeper;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class Test {
public static void main(String[] args) {
Class clazz=Student.class;
try {//类,修饰符,类型,名称
Method method =clazz.getDeclaredMethod("doHomework", Integer.TYPE,String[].class);
System.out.println(method.getDeclaringClass());
System.out.println(Modifier.toString(method.getModifiers()));
clazz =method .getReturnType();
System.out.println(clazz.getName());
System.out.println(method.getName());
Class [] clazzs =method.getParameterTypes();
for (Class str : clazzs) {
System.out.println(str.getName());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
package keeper;
public class Student {
public static String name;
public void doHomework(int a,String [] sd) {
System.out.println(name+"fadfsf");
}
public Student() {
}
public Student(String name) {
this.name=name;
}
}
结果:
class keeper.Student
public
void
doHomework
int
[Ljava.lang.String;
3.操作属性(赋值及获取值)
package keeper;
import java.lang.reflect.Field;
public class Test {
public static void main(String[] args) {
Class clazz=Student.class;
try {
Field field = clazz.getDeclaredField("name");
field.setAccessible(true);
Student student = new Student();
field.set(student, "sgfgsdgdsfg");
Object object =field.get(student);
System.out.println(object);
} catch (Exception e) {
e.printStackTrace();
}
}
}
package keeper;
public class Student {
public static String name;
private void doHomework(int a,String [] sd) {
System.out.println(name+"fadfsf");
}
public Student() {
}
public Student(String name) {
this.name=name;
}
}
结果:
sgfgsdgdsfg