意外的 Class.getMethod 行为

2023-12-09

不久前我有一个类似的问题当使用 Class.getMethod 和自动装箱时,在您自己的查找算法中实现它是有意义的。但真正让我有点困惑的是以下内容也不起作用:

public class TestClass
{
    public String doSomething(Serializable s)
    {
        return s.toString();
    }

    public static void main(String[] args) throws SecurityException, NoSuchMethodException
    {
        TestClass tc = new TestClass();
        Method m = tc.getClass().getMethod("doSomething", String.class);
    }
}

String.class 实现了 Serialized 接口,我真的希望它能够包含在查找方法中。 我是否也必须在自己的查找算法中考虑这一点?

EDIT:我确实读过Javadoc,所以让我强调问题的第二部分:如果是这样,您对如何快速做到这一点有什么建议吗(我已经必须添加一些自定义匹配和转换算法,我不希望它变得太慢)?


根据您的编辑,您可以使用Class#isAssignableFrom()。这是一个基本的启动示例(将明显的(运行时)异常处理放在一边):

package com.stackoverflow.q2169497;

import java.io.Serializable;
import java.lang.reflect.Method;

public class Test {

    public String doSomething(Serializable serializable) {
        return serializable.toString();
    }

    public static void main(String[] args) throws Exception {
        Test test = new Test();
        for (Method method : test.getClass().getMethods()) {
            if ("doSomething".equals(method.getName())) {
                if (method.getParameterTypes()[0].isAssignableFrom(String.class)) {
                    System.out.println(method.invoke(test, "foo"));
                }
            }
        }
    }

}

这应该打印foo到标准输出。

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

意外的 Class.getMethod 行为 的相关文章

随机推荐

  • Flash中位图倾斜的解决方案

    我正在寻找倾斜图像的解决方案 Flash 仅允许倾斜基于矢量的对象 我尝试使用矩阵但无法得到合适的解决方案 我们的目标是制作类似三折小册子的东西 分两步折叠 有人有这方面的提示或示例代码吗 UPDATE 也许我的信息在措辞上有点错误 Fla
  • 如何在Mac上将PIL安装到Python 3.5?

    我对 Python 安装非常陌生 并尝试安装 PIL 我有一种感觉它们被安装到了错误的目录 PIP 似乎已经安装好了 皮查姆 说 Try to run this command from the system terminal Make s
  • Sum From Lookup SSRS 报告服务

    如果我选择 4 天的时间段 它只显示最近一天的容量 但我需要显示 4 天内的总容量 我尝试对容量进行求和 这是一个如下所示的查找 Lookup Fields ID Value Fields Name Value Fields capacit
  • Android:使用 Intent.ACTION_SEND / requestCode / resultCode 发送邮件/短信/推文?

    我正在使用以下代码 Intent sendMailIntent new Intent Intent ACTION SEND sendMailIntent putExtra Intent EXTRA SUBJECT getString R s
  • makefile 中定义的函数

    我有测试项目文件夹结构视图 TOPDIR a a c b b c c c c makefile 我写了一个测试makefile CC gcc LD ld MAKE DIR PWD MODULES a b c SRC DIR addprefi
  • RejectedExecutionException 的原因可能是什么

    我在我的 tomcat 服务器上遇到了这个异常 liferay java util concurrent RejectedExecutionException 我的课是这样的 public class SingleExecutor exte
  • 用纯CSS显示视网膜显示图像

    我遇到一种情况 我不可能知道图像的尺寸 专有的有限 cms 我需要弄清楚如何显示视网膜级别的图像 并且我想在不使用 javascript 的情况下实现这一点 如果可能的话 我一直在使用 media only screen and webki
  • 在 ngTables 中,第三次运行 $scope.tableParams.reload() 会导致 TypeError: Cannot set property '$data' of null

    这个错误是关于ngTableAngularJS 的插件 我似乎遇到了一个非常奇怪的错误 基本上我可以跑 scope tableParams reload 两次没有问题 但在第三次执行以及接下来的每一次执行时 我收到以下错误 TypeErro
  • golang中通过检查MongoDB中的多个属性值来检索项目列表

    这个问题基于MongoDB 如何通过选择多个条件来检索选定的项目 这就像Mysql中的IN条件 SELECT FROMvenuelistWHEREvenueidIN venueid1 venueid2 我附上了我使用过的json数据结构 参
  • 如何停止同时发射超过 1 颗子弹?

    import pygame pygame init red 255 0 0 blue 0 0 255 black 0 0 0 screenWidth 800 screenHeight 600 gameDisplay pygame displ
  • 根据列的颜色使用 pandas 读取 Excel

    我有一个 xlsx 文件 其中包含具有各种颜色的列 我只想使用 pandas 在 python 中读取此 excel 的白色列 但我没有任何关于执行此操作的线索 我能够将完整的 Excel 读取到数据框中 但随后我错过了有关列颜色的信息 并
  • 批量插入时,某一行出错时如何继续插入其他行

    在我的代码中 我正在执行批量插入 举个例子 我有五行要插入 其中一行在插入时失败 然后休眠阻止插入所有行 就我而言 我想插入其他四个不包含错误的记录 这在休眠中可能吗 以下是我的代码的简化版本 void save Session sessi
  • 替换实例化类的实现而不触及代码(java)

    我有不想触及的遗留代码 public class LegacyCode public LegacyCode Service s new ClassA s getMessage Where ClassA提供 CORBA 服务调用 public
  • 获取具有不同键的重复值的枚举变量的值

    我有一个 52 张扑克牌的枚举 如下所述 public enum Card AceClubs 11 AceDiamonds 11 AceHearts 11 AceSpades 11 DeuceClubs 2 DeuceDiamonds 2
  • 如何在 Typescript 中深度扁平化界面?

    例如 interface a name string nested lastName string nested age number 我希望它变成 interface b name string lastName string age n
  • iframe 水平滚动无法在 iOS 上呈现

    我正在开发一个 iOS HTML5 Web 应用程序 需要显示一个包含大量文本的大页面 iframe 似乎是正确的工具 因为它允许滚动以在小屏幕上查看内容 使用 iOS 5 和overflow auto webkit overflow sc
  • HBITMAP 到 JPEG /PNG,无需 C++ 中的 CImage

    我有一个 HBITMAP 我想将其保存到 JPEG PNG 流或字节数组中 问题是我使用 mingw 作为编译器 所以我不能使用 CImage 这会让我的生活更轻松 我可以毫无问题地从位图中获取像素 但我不知道如何以 JPEG PNG 格式
  • 在样式化组件中使用 Ant Design 变量

    我在用蚂蚁设计和这个结合样式组件里面的一个GatsbyJS地点 我希望能够访问 Ant Design 变量 它们是用Less 在样式组件内 像这样的事情 const StyledButton styled Button background
  • 如何在WordPress中创建子主题?

    我正在尝试创建一个子主题 以便我可以自定义父主题 但它不起作用 我做了我能想到的一切 为我的子主题创建了一个文件夹wp content themes 创建了一个style css样式表并将其保存在子主题文件夹中 Theme Name Twe
  • 意外的 Class.getMethod 行为

    不久前我有一个类似的问题当使用 Class getMethod 和自动装箱时 在您自己的查找算法中实现它是有意义的 但真正让我有点困惑的是以下内容也不起作用 public class TestClass public String doSo