获取Class类对象
public class main {
public static void main(String[] args) throws ClassNotFoundException {
Class<student> c=student.class;
System.out.println(c);
student s=new student();
Class<? extends student> c2=s.getClass();
System.out.println(c2);
Class c3=Class.forName("filemain.student");
System.out.println(c3);
ClassLoader classLoader=main.class.getClassLoader();
Class c4=classLoader.loadClass("filemain.student");
System.out.println(c4);
}
}
通过反射创建运行时类的对象
Class cla=student.class;
student obj=(student)cla.getDeclaredConstructor().newInstance();
获取运行时类属性
public class main {
public static void main(String[] args) throws Exception{
Class clazz=student.class;
Field[] fields=clazz.getFields();
Field[] declaredFields = clazz.getDeclaredFields();
Class clazz1=student.class;
Field[] declaredFields1 = clazz.getDeclaredFields();
for(Field f:declaredFields1){
int modifiers = f.getModifiers();
System.out.println(Modifier.toString(modifiers));
Class type=f.getType();
System.out.println(type.getName());
System.out.println(f.getName());
System.out.println("=========");
}
}
}
获取运行时类的方法
public class main {
public static void main(String[] args) throws Exception{
Class clazz=student.class;
Method[] method=clazz.getMethods();
for(Method m:method){
System.out.println(m);
}
Method[] declaredMethods = clazz.getDeclaredMethods();
for(Method m:declaredMethods){
Annotation[] annotation = m.getAnnotations();
for(Annotation ann:annotation){
System.out.println(ann);
}
int modifiers = m.getModifiers();
System.out.println(Modifier.toString(modifiers));
System.out.println(m.getReturnType().getName());
System.out.println(m.getName());
Class[] parameterTypes = m.getParameterTypes();
if(!(parameterTypes==null&¶meterTypes.length==0)){
for(int i=0;i< parameterTypes.length;i++){
if(i== parameterTypes.length-1){
System.out.println(parameterTypes[i].getName()+" arg_"+i);
break;
}
System.out.println(parameterTypes[i].getName()+" arg_"+i+",");
}
}
Class[] exceptionTypes = m.getExceptionTypes();
if(exceptionTypes.length>0){
System.out.println("throws");
for(int i=0;i<exceptionTypes.length;i++){
if(i==exceptionTypes.length-1){
System.out.println(exceptionTypes[i].getName());
break;
}
System.out.println(exceptionTypes[i].getName()+",");
}
}
System.out.println("========");
}
}
}
获取构造器
public class main {
public static void main(String[] args) throws Exception{
Class clazz=student.class;
Constructor[] constructors=clazz.getConstructors();
for(Constructor c:constructors){
System.out.println(c);
}
Constructor[] declaredConstructors = clazz.getDeclaredConstructors();
for(Constructor c:declaredConstructors){
System.out.println(c);
}
}
}
获取带泛型父类的泛型
public class main {
public static void main(String[] args) throws Exception{
Class clazz=student.class;
Type genericSuperclass = clazz.getGenericSuperclass();
ParameterizedType para=(ParameterizedType)genericSuperclass;
Type[] actualtype= para.getActualTypeArguments();
System.out.println(actualtype[0].getTypeName());
}
}
获取运行时类的接口 、所在包、注解
public class main {
public static void main(String[] args) throws Exception{
Class clazz=student.class;
Class[] interfaces = clazz.getInterfaces();
for(Class c:interfaces){
System.out.println(c);
}
Package aPackage = clazz.getPackage();
Annotation[] annotations = clazz.getAnnotations();
}
}
调用运行时类中指定的结构:属性
public class main {
public static void main(String[] args) throws Exception {
Class clazz = student.class;
student obj = (student) clazz.getDeclaredConstructor().newInstance();
Field age = clazz.getDeclaredField("age");
age.setAccessible(true);
age.set(obj, 101);
System.out.println(age.get(obj));
}
}
调用运行时类中指定的结构:方法
public class main {
public static void main(String[] args) throws Exception {
Class clazz = student.class;
student obj = (student) clazz.getDeclaredConstructor().newInstance();
Method declared = clazz.getDeclaredMethod("setName", String.class);
declared.setAccessible(true);
Object returnobj = declared.invoke(obj, "abc");
System.out.println((String) returnobj);
Method show = clazz.getDeclaredMethod("show");
show.setAccessible(true);
Object reobn1=show.invoke(student.class);
System.out.println(reobn1);
}
}
调用运行时类中指定的结构:构造器
public class main {
public static void main(String[] args) throws Exception {
Class clazz = student.class;
Constructor declaredConstructor = clazz.getDeclaredConstructor(String.class);
declaredConstructor.setAccessible(true);
student tom =(student)declaredConstructor.newInstance("tom");
}
}
|