有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java匹配类数组

我正在编写一个例程来调用通过名称和参数类值数组找到的方法

通过getName匹配方法是可行的,但是当尝试为参数和方法匹配给定的类[]时。getParameterTypes(),我遇到问题

我认为这是可行的:

^{pr1}$

但显然不是-m.invoke永远不会到达。我已经检查过了,methodParams提供了与searchParams相同的类

下面的代码是有效的,并选择了正确的方法,但这似乎是一种非常肮脏的方式,我确信我遗漏了一些明显的东西

^{pr2}$


共 (2) 个答案

  1. # 1 楼答案

    数组是对象,而不是基本体。在对象上使用==仅当它们都指向相同的引用时才进行比较,而实际上您希望单独比较每个单独的数组项

    你想用^{}来做这个

    if (Arrays.equals(methodParams, searchParams)) {
        // ...
    }
    
  2. # 2 楼答案

    第一种方法并不是比较数组元素,而是比较数组引用,这是不一样的。如果你认为第二段代码很难看,你可能想看看Arrays.equals(Object[] a, Object[] a2),它实际上会以成对的方式比较两个数组(这正是你在第二种情况下所做的)