您的位置:首页 > 编程语言 > PHP开发

PHP的匿名函数与JAVA的匿名类的应用

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

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

<html>
<body>
<?php
interface Comparator {
function compare($i, $j);
}

function getResult($i, $j, $comparator) {
echo $comparator($i, $j);
}

$comparator1 = function($i, $j) {
if($i > $j) {
return 1;
} else if($i < $j) {
return -1;
} else {
return 0;
}
};

$comparator2 = function($i, $j) {
$ilen = strlen($i);
$jlen = strlen($j);

if($ilen > $jlen) {
return 1;
} else if($ilen < $jlen) {
return -1;
} else {
return 0;
}
};

getResult(1, 2, $comparator1);
getResult(1, 2, $comparator2);

#或者直接这样调用
getResult(1, 2, function($i, $j) {
$ilen = strlen($i);
$jlen = strlen($j);

if($ilen > $jlen) {
return 1;
} else if($ilen < $jlen) {
return -1;
} else {
return 0;
}
});
?>
</body>
</html>


再来看看JAVA匿名类的实现

MyComparator.java

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


Game.java

public class Game<E> {
public void play(E[] array, MyComparator mc) {
int result = mc.compare(array[array.length - 1], array[0]);

if(result > 0) {
System.out.println("Oh no... You Win");
} else if(result == 0) {
System.out.println("Emmm... Draw");
} else {
System.out.println("Haha... You Lose");
}
}
13 }


Test.java

public static void main(String[] args) {
Game<Integer> game = new Game<Integer>();
Integer[] intArr = {1, 2, 3};
game.play(intArr, new MyComparator<Integer>() {
@Override
public int compare(Integer e1, Integer e2) {
if(e1 > e2) {
return 1;
} else if(e1.equals(e2)) {
return 0;
} else {
return -1;
}
}
});
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: