JAVA8系列教程-Generic Functional 接口
温馨提示:
本文最后更新于 2019年12月14日,已超过 1,883 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
学习在Java 8及更高版本中创建具有类型限制和不具有类型限制的Generic Functional接口。请注意,Functional接口仅允许一种抽象方法。这些接口也称为单一抽象方法接口(SAM接口)。
1.无类型限制的Generic Functional
1.1。接口定义
可以定义一个类型通用的功能接口,X
并具有一个可以接受两个type参数X
并返回type值的功能方法X
。
package com.howtodoinjava.java8.example; @FunctionalInterface public interface ArgumentsProcessor<X> { X process(X arg1, X arg2); } |
该接口可被用于任何类型的,即ArgumentsProcessor<Integer>
,ArgumentsProcessor<String>
或ArgumentsProcessor<Employee>
。
1.2。例
使用类型为的通用功能接口的Java示例Integer
。
package com.howtodoinjava.java8.example; public class Main { public static void main(String[] args) { ArgumentsProcessor<Integer> multiplyProcessor = new ArgumentsProcessor<Integer>() { @Override public Integer process(Integer arg1, Integer arg2) { return arg1 * arg2; } }; System.out.println(multiplyProcessor.process( 2 , 3 )); //6 } } |
使用类型为的通用功能接口的Java示例String
。
package com.howtodoinjava.java8.example; public class Main { public static void main(String[] args) { ArgumentsProcessor<String> appendProcessor = new ArgumentsProcessor<String>() { @Override public String process(String str1, String str2) { return str1 + " " + str2; } }; System.out.println(appendProcessor.process( "Hello" , "World !!" )); //Hello World !! } } |
2.具有类型限制的Generic Functional
2.1 接口定义
可以使用关键字ie 定义功能接口,将其限制为某些类型。extends
X extends Number
package com.howtodoinjava.java8.example; @FunctionalInterface public interface ArgumentsProcessor<X extends Number> { X process(X arg1, X arg2); } |
该接口可用于任何类型,即ArgumentsProcessor<Integer>
,ArgumentsProcessor<Double>
但不能用于ArgumentsProcessor<String>
或ArgumentsProcessor<Employee>
。
在上面的示例中,允许的类型必须扩展Number
该类。
2.2 样例
使用类型为的通用功能接口的Java示例Integer
。
package com.howtodoinjava.java8.example; public class Main { public static void main(String[] args) { ArgumentsProcessor<Double> doubleMultiplier = new ArgumentsProcessor<Double>() { @Override public Double process(Double arg1, Double arg2) { return arg1 * arg2; } }; System.out.println(doubleMultiplier.process(4d, 6d)); //24.0 } } |
3.专用Functional接口
通过扩展或实现一种类型的通用功能接口来实现专业化。结果接口或类对于该类型不是通用的。
package com.howtodoinjava.java8.example; @FunctionalInterface public interface ArgumentsProcessor<Integer> { Integer process(Integer arg1, Integer arg2); } |
package com.howtodoinjava.java8.example; public class Main { public static void main(String[] args) { ArgumentsProcessor<Integer> intMultiplier = (i1, i2) -> i1 * i2; System.out.println(intMultiplier.process( 4 , 5 )); //20 } } |
正文到此结束
- 本文标签: 其他
- 本文链接: https://www.v8en.com/article/243
- 版权声明: 本文由SIMON原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权