当前位置: 首页 > 知识库问答 >
问题:

Java程序的元模型库

麹鸿煊
2023-03-14
MetaClass c = MetaParser.parse(X.java);
MetaMethod[] methods = c.getMethods();
MetaAttribute[] attributes = c.getAttributes();

System.out.println("Class " + c.getClassname() + " has " + methods.length + " methods.");

所以我可以通过获取所有方法、所有属性等等来分析那个类。基本上类似于该类的面向对象表示。

共有1个答案

索梓
2023-03-14

评论中提到了反思。下面是一个更详细的示例,说明如何使用它来实现您想要的目标:

假设您有一个类main,您想要了解更多信息:

可以获得类的包:

Main.class.getPackage().getName();
Method[] methods = Main.class.getDeclaredMethods();
Method[] pMethods = Main.class.getMethods(); //only gets the public methods
for(Method m: pMethods) { //print methods and their parameters
   System.out.println("Method " + m.getName() + ", with parameters: ");
   Arrays.asList(methods[0].getParameters()).forEach(p -> System.out.print(p.getName()+","));
}
Constructor<?>[] constructors = Main.class.getConstructors();
Field[] fields = Main.class.getDeclaredFields();
Field[] pFields = Main.class.getFields(); //only public fields
 类似资料:
  • 示例代码目录结构为: 其中Application.java代码: package com.xiaomi.faas.runtime; import com.google.gson.JsonObject; public class Application { public static String main(JsonObject event) { System.out.pr

  • Boost.Call_traits 这个库提供了传递参数给函数的最好方法的自动演绎,依据参数的类型。例如,当传递的是如int 和 double这样的内建类型,最高效的方式是传值。对于用户自定义类型,则传送const引用通常更好。Call_traits为你自动选择正确的参数类型。这个库还有助于声明参数为引用,而不用冒引用到引用的风险(在C++这是非法的)。Call_traits常用于要求以最高效方式

  • 我有两个应用程序:同事和服务,每个都有自己的模型 在coworkers models.py中,我可以“从services.models导入服务”。 当我尝试在services models.py中“from coworkers.models import Status”时,会收到以下错误消息: 回溯(最近一次调用):文件“/Users/lucas/Documents/projetos/cwk-ma

  • 问题内容: 本着与CriteriaQuery关联的类型安全的精神,JPA 2.0还具有一个API,用于支持实体的元模型表示。 是否有人知道此API的完整功能实现(生成元模型,而不是手动创建元模型类)?如果有人也知道在Eclipse中进行设置的步骤,那将是非常棒的(我认为这与设置注释处理器一样简单,但你永远不会知道)。 编辑:偶然发现了Hibernate JPA 2元模型生成器。但是问题仍然存在,因

  • 本文向大家介绍Java程序的数组元素相乘,包括了Java程序的数组元素相乘的使用技巧和注意事项,需要的朋友参考一下 查找数组元素的乘积。 创建一个空变量(product)。 用1初始化它。 在循环中遍历每个元素(或从用户那里获取每个元素)将每个元素乘以乘积。 打印乘积(product)。 示例 输出结果

  • 本文向大家介绍Java程序将Java Float转换为数值基元数据类型,包括了Java程序将Java Float转换为数值基元数据类型的使用技巧和注意事项,需要的朋友参考一下 让我们首先声明一个Float对象。 现在,让我们将其转换为简短的数字原始数据类型 同样,我们可以使用method将其转换为int 。 以下是将Float转换为其他数字原始数据类型的示例。 示例 输出结果