美文网首页
java反射-第2篇

java反射-第2篇

作者: 松松木tell | 来源:发表于2019-01-03 17:11 被阅读0次

开门见山

例A
User.java

package com.saictest.demo.controller;

public class User {
    private String name;
    private String age;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
}

SystemUser.java

package com.saictest.demo.controller;

public class SystemUser extends User {
    private String password;

    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    private void getxx(){

    }
}

测试类

package com.saictest.demo.controller;

import java.lang.reflect.Method;

public class DeclaredTest {
    public static void main(String[] args) throws ClassNotFoundException {
        Class<?> cls = Class.forName("com.saictest.demo.controller.SystemUser");
        Method[] methods = cls.getMethods();
        for (Method m : methods) {
            System.out.println(m.getName());
        }

    }
}

输出结果

getPassword
setPassword
getName
setName
getAge
setAge
wait
wait
wait
equals
toString
hashCode
getClass
notify
notifyAll

小荷才露尖尖角

上面一个简单的例子可以感受下反射的简单用法,下面我们从最常用的写法入手逐步深入了解,我觉得学一个东西,熟能生巧,只有熟练的使用后才能更好的理解。

  • getDeclaredMethods和getMethods的区别

getDeclaredMethods:获取自身所有的方法,包括public,private,private
getMethods:获取的是类的所有公有方法,包括从父类、接口继承来的 public方法

从例A上可以看到getMethods 打印出父类和Obejct的所有公共方法,上面的例子稍微修改下

....
  Class<?> cls = Class.forName("com.saictest.demo.controller.SystemUser");
        Method[] methods = cls.getDeclaredMethods();
        for (Method m : methods) {
            System.out.println(m.getName());
        }
....

打印的结果如下

getPassword
setPassword
getxx

同理getDeclaredMethod和getMethod也和上面一样

  • getDeclaredMethod和getMethod
    我在User.java中添加下面一个方法
public void doSomething(String str) {
        System.out.println(str +"!!!");
    }

再修改下DeclaredTest.java

Class<?> cls = Class.forName("com.saictest.demo.controller.SystemUser");
Method method=cls.getMethod("doSomething",new Class[]{String.class});
method.invoke(cls.newInstance(),new Object[]{"你好啊"});

打印结果

你好啊!!!

相关文章

  • 博客地址

    java注解-01、java注解-02、Git面试资源java反射-01、java反射-02、java反射-03为...

  • Java反射机制入门

    Java反射机制入门 一、什么是反射 JAVA反射机制(The JAVA reflection mechanism...

  • Java基础之反射

    Java基础之—反射(非常重要)Java中反射机制详解Java进阶之reflection(反射机制)——反射概念与...

  • 反射之一

    总结内容源自一下文章粗浅看java反射机制反射机制应用实践谈谈java反射机制Java Reflection(反射...

  • 反射之二

    总结内容源自一下文章粗浅看java反射机制反射机制应用实践谈谈java反射机制Java Reflection(反射...

  • Java基础之反射

    Java基础之反射 反射基本介绍 反射的使用通过反射调用属性和方法通过反射获取配置文件 反射基本介绍 Java反射...

  • Java 反射机制

    Java 反射机制 什么是反射 Java 反射是Java语言的一个很重要的特征,它使得Java具体了“动态性”。 ...

  • 一探究竟:Java反射效率低的原因到底在哪?

    预备知识 了解 Java 反射基本用法 看完本文可以达到什么程度 了解 Java 反射原理及 Java 反射效率低...

  • 面试官说:大家都说 Java 反射效率低,你知道原因在哪里么

    预备知识 了解 Java 反射基本用法 看完本文可以达到什么程度 了解 Java 反射原理及 Java 反射效率低...

  • Java面试题之JavaSE高级

    一、Java中的反射 1.说说你对Java中反射的理解 java中的反射首先是能够获取到Java...

网友评论

      本文标题:java反射-第2篇

      本文链接:https://www.haomeiwen.com/subject/bhrzlqtx.html