zoukankan      html  css  js  c++  java
  • PHP的匿名函数与JAVA的匿名类的应用

    一般来说匿名函数与匿名类用于回调,因为你可能并不知道回调函数或方法的具体实现,并且可能需要根据实际情况进行改变,并且匿名函数不需要使用具体的对象,也减少了开销

    下面看看PHP的匿名函数应用实现

     1 <html>
     2      <body>
     3          <?php
     4             interface Comparator {
     5                 function compare($i, $j);
     6             }
     7             
     8             function getResult($i, $j, $comparator) {
     9                 echo $comparator($i, $j);
    10             }
    11             
    12             $comparator1 = function($i, $j) {
    13                 if($i > $j) {
    14                     return 1;
    15                 } else if($i < $j) {
    16                     return -1;
    17                 } else {
    18                     return 0;
    19                 }
    20             };
    21             
    22             $comparator2 = function($i, $j) {
    23                 $ilen = strlen($i);
    24                 $jlen = strlen($j);
    25                 
    26                 if($ilen > $jlen) {
    27                     return 1;
    28                 } else if($ilen < $jlen) {
    29                     return -1;
    30                 } else {
    31                     return 0;
    32                 }
    33             };
    34             
    35             getResult(1, 2, $comparator1);
    36             getResult(1, 2, $comparator2);
    37             
    38             #或者直接这样调用
    39             getResult(1, 2, function($i, $j) {
    40                 $ilen = strlen($i);
    41                 $jlen = strlen($j);
    42                 
    43                 if($ilen > $jlen) {
    44                     return 1;
    45                 } else if($ilen < $jlen) {
    46                     return -1;
    47                 } else {
    48                     return 0;
    49                 }
    50             });
    51          ?>
    52      </body>
    53  </html>

    再来看看JAVA匿名类的实现

    MyComparator.java

    1 public interface MyComparator<E> {
    2     int compare(E e);       
    3 }

    Game.java

     1 public class Game<E> {
     2     public void play(E[] array, MyComparator mc) {
     3         int result = mc.compare(array[array.length - 1], array[0]);
     4 
     5         if(result > 0) {
     6             System.out.println("Oh no... You Win");
     7         } else if(result == 0) {
     8             System.out.println("Emmm... Draw");
     9         } else {
    10             System.out.println("Haha... You Lose");
    11         }
    12     }
    13 }

    Test.java

     1     public static void main(String[] args) {
     2         Game<Integer> game = new Game<Integer>();
     3         Integer[] intArr = {1, 2, 3};
     4         game.play(intArr, new MyComparator<Integer>() {
     5             @Override
     6             public int compare(Integer e1, Integer e2) {
     7                 if(e1 > e2) {
     8                     return 1;
     9                 } else if(e1.equals(e2)) {
    10                     return 0;
    11                 } else {
    12                     return -1;
    13                 }
    14             }
    15         });
    16     }
  • 相关阅读:
    Java基础面试题总结-编程题总结
    Linux下mysql的安装与卸载并且连接navicat详解(亲测可用)
    linux 下安装redis
    linux 下安装tomcat
    Linux系统下安装jdk及环境配置(两种方法)
    Servlet概述
    多线程之volatile关键字
    多线程之ThreadLocal
    多线程之synchronized实现原理
    线程池2
  • 原文地址:https://www.cnblogs.com/zemliu/p/2508565.html
Copyright © 2011-2022 走看看