java反射机制

最近本菜鸟在学习java的反射机制,自己写了参考网上的一些资料,写了一些代码。现在分享给大家。我参考了网上的一些文章,如有侵权联系删除。
java 的反射机制是java重要的特性之一。

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。—-百度百科

和java反射部分相关的方法:


Constructor[] getConstructors() //获得所构造方法
Method[] getMethods()//获得包括父类的方法所有方法包括实现接口的方法
Method[] getDeclaredMethods()//获得所有自己定义的方法和
Method.getReturnType()//获得方法的返回值
Method.getParameterCount()//获得方法参数的个数
Field[] getFields()//获得所有的public属性
Field[] getDeclaredFields()//获得所有的自己生命的public和private还有protected属性
 getSuperclass()//获得本类的父类
 getInterfaces()//获得所有的接口名称


import java.lang.reflect.Method;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;

public class TestFlect { 

    public static void main(String args[]) { 
    Rflect rf = new Rflect("hello"); 
        Class clazz = rf.getClass(); 
        Method[] methods=clazz.getMethods();
        System.out.println("_____________all methods___________________");
        for(Method method:methods) {

        System.out.println(method.toString());
        }
        System.out.println("___________declared methods______________");
        Method[]dmethods=clazz.getDeclaredMethods();
        for(Method method:dmethods) {
        System.out.println(method.toString());
        }
        System.out.println("___________declared methods and return types______________");
        for(Method method:dmethods) {
        System.out.println(method.toString()+""+method.getReturnType());
        }
        System.out.println("___________declared methods and para num______________");
        for(Method method:dmethods) {
        System.out.println(method.toString()+""+method.getParameterCount());
        }
        System.out.println("___________all constructors______________");
        Constructor[] cons=clazz.getConstructors();
        for(Constructor con:cons) {
        System.out.println(con.toString());
        }
        System.out.println("___________all public fields______________");
        Field[] fields=clazz.getFields();
        for(Field field:fields) {
        System.out.println(field.getName());
        }
        System.out.println("___________all declared public and private and protected fields______________");
        Field[] dfields=clazz.getDeclaredFields();
        for(Field field:dfields) {
        System.out.println(field.getName());
        }
        System.out.println("___________Super Class______________");
        System.out.println(clazz.getSuperclass().getName());
        System.out.println("___________interface______________");
        Class[] interfaces=clazz.getInterfaces();
        for(Class inter:interfaces) {
        System.out.println(inter.getName());
        }

    } 
} 
interface InterfaceA{
   void InterfaceMethodA();
}
interface InterfaceB{
void InterfaceMethodB();
}
interface InterfaceC{
void InterfaceMethodC();
}
interface InterfaceD{
void InterfaceMethodD();
}
class FatherClass{
public int fatherfield;
private int privatefather;
protected int protectfather;
private void mprivatefather() {}
protected void mprotectedfather() {}
public void mpublicfather() {}
}
class Rflect extends FatherClass implements InterfaceA,InterfaceB,InterfaceC,InterfaceD{ 
    private String str; 
    private int a;
    private int b;
    private int c;
    private int d;
    public int pa;
    public int pb;
    public int pc;
    public int pd;
    protected int protectedint;
    public Rflect(String str) { 
        this.str = str; 
    }
    public Rflect(int a) {
    this.a=a;
    }
    public Rflect() {

    }

    public void RMethodA(String str) { 
        this.str = str; 
    } 

    public String RMethodB() { 
        return this.str; 
    } 

    public int RMethodC() {
    return 0;
    }
    public double RMethodD() {
    return 0.0;
    }
@Override
public void InterfaceMethodD() {
// TODO Auto-generated method stub

}
@Override
public void InterfaceMethodC() {
// TODO Auto-generated method stub

}
@Override
public void InterfaceMethodB() {
// TODO Auto-generated method stub

}
@Override
public void InterfaceMethodA() {
// TODO Auto-generated method stub

}
private void privateMethodA() {

}
private int privateMethodB() {
return 0;
}
private String privateMethodC() {
return "";
}
private double privateMethodD() {
  return 0.0;
}
}

##输出结果为:

________all methods______________
public void tablejava.Rflect.InterfaceMethodC()
public void tablejava.Rflect.InterfaceMethodB()
public void tablejava.Rflect.InterfaceMethodD()
public void tablejava.Rflect.InterfaceMethodA()
public void tablejava.Rflect.RMethodA(java.lang.String)
public java.lang.String tablejava.Rflect.RMethodB()
public double tablejava.Rflect.RMethodD()
public int tablejava.Rflect.RMethodC()
public void tablejava.FatherClass.mpublicfather()
public final void java.lang.Object.wait() throws java.lang.InterruptedException
public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
public boolean java.lang.Object.equals(java.lang.Object)
public java.lang.String java.lang.Object.toString()
public native int java.lang.Object.hashCode()
public final native java.lang.Class java.lang.Object.getClass()
public final native void java.lang.Object.notify()
public final native void java.lang.Object.notifyAll()
______declared methods_________
private void tablejava.Rflect.privateMethodA()
public void tablejava.Rflect.InterfaceMethodC()
private double tablejava.Rflect.privateMethodD()
public void tablejava.Rflect.InterfaceMethodB()
private java.lang.String tablejava.Rflect.privateMethodC()
private int tablejava.Rflect.privateMethodB()
public void tablejava.Rflect.InterfaceMethodD()
public void tablejava.Rflect.InterfaceMethodA()
public void tablejava.Rflect.RMethodA(java.lang.String)
public java.lang.String tablejava.Rflect.RMethodB()
public double tablejava.Rflect.RMethodD()
public int tablejava.Rflect.RMethodC()
______declared methods and return types_________
private void tablejava.Rflect.privateMethodA()void
public void tablejava.Rflect.InterfaceMethodC()void
private double tablejava.Rflect.privateMethodD()double
public void tablejava.Rflect.InterfaceMethodB()void
private java.lang.String tablejava.Rflect.privateMethodC()class java.lang.String
private int tablejava.Rflect.privateMethodB()int
public void tablejava.Rflect.InterfaceMethodD()void
public void tablejava.Rflect.InterfaceMethodA()void
public void tablejava.Rflect.RMethodA(java.lang.String)void
public java.lang.String tablejava.Rflect.RMethodB()class java.lang.String
public double tablejava.Rflect.RMethodD()double
public int tablejava.Rflect.RMethodC()int
______declared methods and para num_________
private void tablejava.Rflect.privateMethodA()0
public void tablejava.Rflect.InterfaceMethodC()0
private double tablejava.Rflect.privateMethodD()0
public void tablejava.Rflect.InterfaceMethodB()0
private java.lang.String tablejava.Rflect.privateMethodC()0
private int tablejava.Rflect.privateMethodB()0
public void tablejava.Rflect.InterfaceMethodD()0
public void tablejava.Rflect.InterfaceMethodA()0
public void tablejava.Rflect.RMethodA(java.lang.String)1
public java.lang.String tablejava.Rflect.RMethodB()0
public double tablejava.Rflect.RMethodD()0
public int tablejava.Rflect.RMethodC()0
______all constructors_________
public tablejava.Rflect()
public tablejava.Rflect(int)
public tablejava.Rflect(java.lang.String)
______all public fields_________
pa
pb
pc
pd
fatherfield
______all declared public and private and protected fields_________
str
a
b
c
d
pa
pb
pc
pd
protectedint
______Super Class_________
tablejava.FatherClass
______interface_________
tablejava.InterfaceA
tablejava.InterfaceB
tablejava.InterfaceC
tablejava.InterfaceD

“`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值