使用反射打印列表

2024-01-28

 public class Service{ 
       String serviceName;
      //setter and getter
  }

  public class Version{ 
       int VersionID;
      //setter and getter
  }

  public void test(Object list){

        //it shd print the obtained list

   }

列表列表1; //服务是一个Bean
列表列表2; //版本是一个Bean
测试(列表1);
测试(列表2);

现在测试方法 shd 打印获得的列表 - (即)如果列表是类型Service,那么 serviceName 应该使用它的 getter 来打印。如果列表类型是Version应该打印版本ID。
是否可以在不使用接口或抽象类的情况下实现这一目标?


@danLeon 到目前为止有最简单的想法(添加toString到课程),假设您有权访问Service and Version.

我不确定你为什么要考虑反射,但我唯一能想到的是你想要一些可以与任何具有单一属性的对象一起使用的东西Stringgetter,然后你会做这样的事情(我认为这很疯狂,但它使用反射):

Class clazz = list.get(0).getClass();
Method[] methods = clazz.getDeclaredMethods();
Method onlyStringGetter = null;
for (Method method: methods) {
    String mName = method.getName();
    if (mName.matches("get\w+") {
        if (method.getReturnType().equals(String.class) {
            if (onlyStringGetter != null) thrown new RuntimeException("More than one String getter available");
            onlyStringGetter = method;
        }
    }
}
if (onlyStringGetter == null) throw new RuntimeException("No String getter found for class: " + clazz.getName());
List<String> strings = new ArrayList<String>();
for (Object singleStringAttribObj: list) {
    // some exception handling needed for below
    String result = (String)onlyStringGetter.invoke(singleStringAttribObj);
    strings.add(result);
}
System.out.println(strings);

我没有编译或尝试过,但这大约是正确的。肯定需要一些额外的异常处理

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用反射打印列表 的相关文章

  • Hibernate 每个子类一个表继承策略的效率

    我正在考虑 Hibernate 管理的类层次结构的表布局 当然 每个子类表技术在我看来是一般意义上最合适的 然而 通过逻辑思考 我对其性能有些担忧 尤其是随着子类数量的扩展 举一个非常简短 且经典 的示例 假设您有以下类 public ab
  • 从另一个进程捕获 system.out 消息

    我有一个 JVM 1 它启动 JVM 2 我希望能够在 JVM 1 中监视来自 JVM 2 的 System out println 调用 直接的方法是 JVM A 执行系统命令来启动 JVM B 然后 JVM A 读取 B 的所有输出 S
  • Grails 项目 - Servlet 调用 - ClassNotFoundException:javax.servlet.AsyncContext

    我在用 IntelliJ IDEA 终极版 12 4 grails 2 2 0 BuildConfig groovy 文件中的 grails servlet version 2 5 并实现了简单的 servlet post 请求 使用 RE
  • 在 json 中解析尾随字符

    我正在尝试检查 json 是否有效 并且我遇到了奇怪的行为 当我将一些字符附加到可解析的 json 时 jackson 和 gson 都会解析它 并且它们会忽略尾随字符 我想检查 json 是否严格有效 请帮忙 我尝试了几个标志mapper
  • NIO 直接缓冲区何时以及如何被释放?

    我有一个 C 库 需要一个临时缓冲区作为暂存空间 我正在考虑将直接字节缓冲区的地址传递给它 在最终释放缓冲区之前 是否允许虚拟机重新定位缓冲区 JNI 框架消失后 本机库将保留该指针 我的理解是 JNI 本地对象引用无法缓存 因为 VM 可
  • Java 表达式树 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有相当于 net的 LINQ 下的表达式树JVM 我想实现一些类似 LINQ 的代码结构Scala
  • JTree ConvertValueToText 返回在更改时被截断

    我有一个自定义树实现convertValueToText 此实现取决于某些全局状态 如果返回的字符串比先前返回的字符串更长 实际上我认为更宽 因为以像素为单位触发它 则文本将被截断并用 填充 当重绘是由 取消 选择元素或某个元素引起时 情况
  • SSLContext 初始化

    我正在看JSSE参考指南 我需要获取一个实例SSLContext为了创建一个SSLEngine 所以我可以使用它Netty以启用安全性 获取实例SSLContext I use SSLContext getInstance 我看到该方法被重
  • 如何在java中从包含.0的浮点数中删除小数部分

    我只想删除包含的浮点数的小数部分 0 所有其他数字都是可以接受的 例如 I P 1 0 2 2 88 0 3 56666 4 1 45 00 99 560 O P 1 2 2 88 3 567 4 1 45 99 560 有什么方法可以做到
  • 如何在 Java 中使用 HTML 解析器和 Apache Tika 来提取所有 HTML 标签?

    我下载了 tika core 和 tika parser 库 但找不到将 HTML 文档解析为字符串的示例代码 我必须删除网页源的所有 html 标签 我能做些什么 如何使用 Apache Tika 进行编码 您想要 html 文件的纯文本
  • Java 8 Stream - 并行执行 - 不同的结果 - 为什么?

    假设我有一个List
  • 如何在 QueryDSL 中选择文字

    我目前正在开发一个使用 queryDSL 和 hibernate 的项目 其中它需要一个选择文字 按照发布的示例here https stackoverflow com questions 18691317 querydsl how to
  • Java 声音可视化器

    我正在尝试制作一个java声音可视化工具 但我完全不知道如何在实时处理音频后立即从提取的音频中获取字节 我可以将程序与 wav 文件同步 但这不是我想要做的 我想用程序生成声音 然后播放它 而不将其保存在任何地方 谢谢您的帮助 本文可以帮助
  • 将 Maven 控制台与 m2eclipse 一起使用

    Maven 新手在这里 有没有办法在 Eclipse 中打开控制台并在 M2Eclipse 插件上执行 Maven 命令 这是一个非常好的插件 但我环顾四周 没有找到我想要的一些功能 谢谢 如果你想运行特定的maven插件 你可以这样做 g
  • “强制更新快照/版本” - 这是什么意思

    在 Maven 项目中 选择 更新项目 时 有一个名为 强制更新快照 版本 的选项 它有什么作用 强制更新快照 版本 就像运行以下命令 mvn U install U 也可以用作 update snapshot 看here http boo
  • 在Java内存管理中,“PS”代表什么?

    每当我看到 Java 中对内存的引用时 各种空格总是以 PS 为前缀 PS 是什么意思 它开始困扰我 到目前为止我唯一的猜测是 泳池空间 但这将是多余的 例子 PS伊甸园空间 PS 幸存者空间 PS 终身空间 老一代 PS Perm Gen
  • Eclipse 如何创建一个未解决编译问题的类?

    当我尝试使用 javac 编译此类时 出现编译错误并且未创建 Test class public class Test public static void main String args int x 1L lt this cannot
  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • Volley 在第一次调用方法时返回 null

    我正在尝试使用 volley 从服务器检索数据 但是当我第一次调用此方法时 我收到服务器的响应 但该方法返回 null 如果我第二次调用它 我会得到最后的响应 public String retrieveDataFromServer Str
  • 需要在没有wsdl的情况下调用soap ws

    我是网络服务的新手 这个网络服务是由 siebel 提供的 我需要调用一项网络服务 我的客户向我提供了以下详细信息 这是 SOAP 对于产品 请使用它作为端点 Request

随机推荐

  • maven-shade-plugin 报告:创建着色 jar 时出错:...target/classes(是一个目录)

    当使用 m2eclipse 工具在 eclipse 中为配置为以下项目的项目运行 Maven 构建时Maven 阴影插件 https maven apache org plugins maven shade plugin 构建失败并显示以下
  • ResponseEntity 不接受文本/csv:Spring Boot

    我正在尝试创建一个接受 CSV 和 json 正文请求等文件的 API 我尝试使用ResponseEntitySpring Boot 中的对象 端点如下所示 PostMapping value csv consumes MediaType
  • 左侧 div 在 bootstrap 中未正确对齐[重复]

    这个问题在这里已经有答案了 我的代码中已经有粘性标头 我正在尝试在左侧添加一个粘性 div 最初看起来不错 当我尝试滚动内容时 布局正在改变 此外 在最小尺寸 移动尺寸 时 左侧 div 未正确对齐 请建议 var onResize fun
  • 如何通过 RxJs 合并或 groupBy toPromise?

    我有以下方法返回结果 如下所示 result status 200 status 200 status 400 我需要使用状态值对结果进行分组 并且对于上面的示例结果仅返回 2 个结果 而不是 3 个 update this demoSer
  • 这个Makefile 有什么问题吗?

    当我在以下 Makefile 上运行 make all 时 出现此错误 Makefile 5 缺少分隔符 停止 这是什么问题以及如何修复它 LEX lex YACC yacc CC gcc calcu y tab o lex yy o CC
  • GCC 左移溢出

    下面的小程序在 Mac 上使用 GCC 版本 4 2 1 Apple Inc build 5664 非常尴尬 include
  • Node+Express+MongoDB Native Client 性能问题

    我正在使用 MongoDB 测试 Node js ExpressJS Fastify Python Flask 和 Java 带有 webflux 的 Spring Boot 的性能 我将所有这些示例应用程序相继托管在同一台服务器上 因此所
  • 如何调试 GLSL 着色器?

    我需要调试 GLSL 程序 但我不知道如何输出中间结果 是否可以使用 GLSL 进行一些调试跟踪 例如使用 printf 而不使用像 glslDevil 这样的外部软件 您无法轻松地从 GLSL 内部与 CPU 进行通信 使用 glslDe
  • 如何仅显示一次网站预加载器

    我向我的网站添加了预加载器 每次访问该网站时都会播放预加载器动画 我希望它在每次访问域名时只播放一次 任何点击网站上的主页按钮或浏览器中的后退按钮我希望跳过预加载器 我希望它在任何时候在新选项卡或新浏览器窗口中打开时都显示出来 我尝试添加c
  • Python 日志记录:覆盖日志时间

    下列的Python 的文档 http docs python org library logging html logging Formatter formatTime 我正在尝试覆盖logging Formatter converter以
  • 新类型比枚举更快吗?

    根据本文 http www haskell org haskellwiki Performance Data types 就 GHC 而言 枚举不算作单构造函数类型 因此当用作严格构造函数字段或严格函数参数时 它们不会从解包中受益 这是 G
  • 如何处理 SVG 像素捕捉

    我正在尝试使用路径元素渲染两条 svg 线 第一行宽度为 1px 并且很锐利 第二条线宽度为 2px 并且很模糊两者的笔划宽度相同 如何解决这个问题
  • 防止在 Ruby 中将字符串转换为八进制数

    假设我们有以下 ruby 代码 require yaml h key gt step1 gt 0910 1223 puts h to yaml 0910 是一个字符串 但是之后to yaml转换 字符串变成八进制数 key step1 09
  • 哪一个 NoSQL 数据库(如果有)可以为查询结果集提供*更改*流?

    哪个 NoSQL 数据库 如果有的话 可以提供changes到查询结果集 有人能给我举一些例子吗 首先 我相信没有一个 SQL 数据库提供此功能 我是对的吗 我需要能够指定任意 简单的查询 其在 SQL 中的等价形式可以写成 SELECT
  • 控制 zenity 窗口中内容的大小?

    我可以控制 a 的大小zenity http en wikipedia org wiki Zenity窗口与 width和 height论点 zenity info text This is an information box width
  • Angular ui-select:如何仅将选定的值绑定到 ng-model

    scope property new Property scope property propertyType scope propertyTypes value ResidentialPlot name Residential Plot
  • 现有内部主题具有无效分区

    当在只有一个 Kafka 代理的测试设置中启动我们的 Kafka Streams 应用程序时 我们大约在 15 次运行中看到以下错误 org apache kafka streams errors StreamsException Exis
  • 如何将特定标签/版本与作曲家和私有 git 存储库一起使用?

    我在我公司的 Gitlab 上托管了一些包 我想请求这些包的特定版本 但每次尝试时 composer 都会下载 master 分支的最新提交 作曲家 json name MyProject require user project v0 5
  • 从 Powershell 传递实际的返回代码

    我有一个命令行 exe 实用程序 需要内联密码才能调用 显然 这并不理想 因此我创建了一个 PS 包装器来加密密码并存储它 从 PSCredential 对象调用它 所有这些都工作正常 但我需要错误处理 如果我添加exit LASTEXIT
  • 使用反射打印列表

    public class Service String serviceName setter and getter public class Version int VersionID setter and getter public vo