在Java中如何将方法引用与泛型一起使用?

方法引用在Java8中引入,类似于lambda表达式。它允许我们引用方法或构造函数而不执行它们。方法引用和lambda表达式需要由兼容函数接口组成的目标类型。我们还可以在java中使用泛型类和泛型方法的方法引用。

示例

interface MyFunc<T> {

   int func(T[] vals, T v);

}

class MyArrayOps {

   static<T> int countMatching(T[] vals, T v) {

      int count = 0;

      for(int i=0; i < vals.length; i++)

         if(vals[i] == v)

            count++;

      return count;

   }

}

public class GenericMethodRefTest {

   static<T> int myOp(MyFunc f, T[] vals, T v) {

      return f.func(v als, v);

   }

   public static void main(String args[]) {

      Integer[] vals = { 1, 2, 3, 4, 2, 3, 4, 4, 5 };

      String[] strs = { "One", "Two", "Three", "Two" };

      int count;

      count = myOp(MyArrayOps :: countMatching, vals, 4);

      System.out.println("vals 包含" + count + " 4s");

      count = myOp(MyArrayOps :: countMatching, strs, "Two");

      System.out.println("strs 包含" + count + " Twos");

   }

}

输出结果

vals 包含3 4s

strs 包含2 Twos

以上是 在Java中如何将方法引用与泛型一起使用? 的全部内容, 来源链接: utcz.com/z/326368.html

回到顶部