热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

获得一个类的方法

通过class.getMethos()方法获得类的所有公共方法包括父类的公共方法。1importlombok.Data;23**4*Createdbyhunton2017627.5

通过class.getMethos()方法获得类的所有公共方法包括父类的公共方法。

1 import lombok.Data;
2
3 /**
4 * Created by hunt on 2017/6/27.
5 * 测试的实体类
6 * @Data 编译后会自动生成set、get、无惨构造、equals、canEqual、hashCode、toString方法
7 */
8 @Data
9 public class Person {
10 private String name;
11 public String nickName;
12 private int age;
13 private void say(){
14 System.out.println("say hunt");
15 }
16 }

View Code

1 import java.lang.reflect.Method;
2
3 /**
4 * Created by hunt on 2017/6/27.
5 */
6 public class NewInstanceTest {
7 public static void main(String[] args) {
8 Class personClass = Person.class;
9 try {
10 Method[] methods = personClass.getMethods();
11 for (Method m:methods) {
12 System.out.println(m);
13 }
14 } catch (Exception e) {
15 e.printStackTrace();
16 }
17 }
18 }

View Code

 

通过class.getDeclaredMethods()方法获得类的所有属性(公共,保护,默认,和私有方法)。

1 import java.lang.reflect.Method;
2
3 /**
4 * Created by hunt on 2017/6/27.
5 */
6 public class NewInstanceTest {
7 public static void main(String[] args) {
8 Class personClass = Person.class;
9 try {
10 Method[] methods = personClass.getDeclaredMethods();
11 for (Method m:methods) {
12 System.out.println(m);
13 }
14 } catch (Exception e) {
15 e.printStackTrace();
16 }
17 }
18 }

View Code

 

注意:返回的方法数组中的元素没有排序,也没有任何特定的顺序。

 

获得具体的方法:

1 import java.lang.reflect.Method;
2
3 /**
4 * Created by hunt on 2017/6/27.
5 */
6 public class NewInstanceTest {
7 public static void main(String[] args) {
8 Class personClass = Person.class;
9 try {
10 Person p = personClass.newInstance();
11 Method method = personClass.getMethod("setName", String.class);
12 method.invoke(p,"hunt");
13 System.out.println(p);
14 method = personClass.getMethod("getName");
15 System.out.println("getName方法"+method.invoke(p));
16 method = personClass.getDeclaredMethod("say");
17 method.setAccessible(true);//私有方法要授权
18 method.invoke(p);
19 } catch (Exception e) {
20 e.printStackTrace();
21 }
22 }
23 }

View Code

总结:personClass.getDeclaredMethod("say"); 

   method.setAccessible(true);

基于对属性的保护,默认为false。这里相当于一个授权的过程,设置true来允许操作这个属性。

 

转:https://www.cnblogs.com/hunt/p/7095593.html



推荐阅读
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 本文详细解析了客户端与服务器之间的交互过程,重点介绍了Socket通信机制。IP地址由32位的4个8位二进制数组成,分为网络地址和主机地址两部分。通过使用 `ipconfig /all` 命令,用户可以查看详细的IP配置信息。此外,文章还介绍了如何使用 `ping` 命令测试网络连通性,例如 `ping 127.0.0.1` 可以检测本机网络是否正常。这些技术细节对于理解网络通信的基本原理具有重要意义。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 分享一款基于Java开发的经典贪吃蛇游戏实现
    本文介绍了一款使用Java语言开发的经典贪吃蛇游戏的实现。游戏主要由两个核心类组成:`GameFrame` 和 `GamePanel`。`GameFrame` 类负责设置游戏窗口的标题、关闭按钮以及是否允许调整窗口大小,并初始化数据模型以支持绘制操作。`GamePanel` 类则负责管理游戏中的蛇和苹果的逻辑与渲染,确保游戏的流畅运行和良好的用户体验。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • 本文探讨了 Java 中 Pair 类的历史与现状。虽然 Java 标准库中没有内置的 Pair 类,但社区和第三方库提供了多种实现方式,如 Apache Commons 的 Pair 类和 JavaFX 的 javafx.util.Pair 类。这些实现为需要处理成对数据的开发者提供了便利。此外,文章还讨论了为何标准库未包含 Pair 类的原因,以及在现代 Java 开发中使用 Pair 类的最佳实践。 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • 本文详细介绍了 Java 中遍历 Map 对象的几种常见方法及其应用场景。首先,通过 `entrySet` 方法结合增强型 for 循环进行遍历是最常用的方式,适用于需要同时访问键和值的场景。此外,还探讨了使用 `keySet` 和 `values` 方法分别遍历键和值的技巧,以及使用迭代器(Iterator)进行更灵活的遍历操作。每种方法都附有示例代码和具体的应用实例,帮助开发者更好地理解和选择合适的遍历策略。 ... [详细]
  • 在使用 Qt 进行 YUV420 图像渲染时,由于 Qt 本身不支持直接绘制 YUV 数据,因此需要借助 QOpenGLWidget 和 OpenGL 技术来实现。通过继承 QOpenGLWidget 类并重写其绘图方法,可以利用 GPU 的高效渲染能力,实现高质量的 YUV420 图像显示。此外,这种方法还能显著提高图像处理的性能和流畅性。 ... [详细]
  • 本文探讨了如何利用Java代码获取当前本地操作系统中正在运行的进程列表及其详细信息。通过引入必要的包和类,开发者可以轻松地实现这一功能,为系统监控和管理提供有力支持。示例代码展示了具体实现方法,适用于需要了解系统进程状态的开发人员。 ... [详细]
  • Squaretest:自动生成功能测试代码的高效插件
    本文将介绍一款名为Squaretest的高效插件,该工具能够自动生成功能测试代码。使用这款插件的主要原因是公司近期加强了代码质量的管控,对各项目进行了严格的单元测试评估。Squaretest不仅提高了测试代码的生成效率,还显著提升了代码的质量和可靠性。 ... [详细]
  • 本文详细探讨了MySQL数据库实例化参数的优化方法及其在实例查询中的应用。通过具体的源代码示例,介绍了如何高效地配置和查询MySQL实例,为开发者提供了有价值的参考和实践指导。 ... [详细]
author-avatar
yun建2502930453
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有