Tout d’abord, regardons ce qu’est un pointeur en langage C. Littéralement, c’est une structure similaire à la fonction de positionnement. La fonction la plus importante d'un pointeur est d'implémenter une fonction de rappel. La fonction dite de rappel signifie que la fonction est d'abord enregistrée quelque part et qu'elle sera appelée en cas de besoin ultérieurement. Les fonctions de rappel sont généralement utilisées pour intercepter des messages, obtenir des informations système ou gérer des événements asynchrones.
Comment implémenter des fonctions similaires aux pointeurs de fonction en langage C
en langage Java Il n'y a pas de concept de pointeurs. Vous pouvez utiliser des interfaces et des classes pour obtenir le même effet. Vous devez d'abord définir une interface, puis déclarer la méthode à appeler dans l'interface, puis implémenter cette interface (différentes implémentations fonctionnelles, comme une). ordre croissant et un ordre décroissant), et enfin un objet de cette classe d'implémentation est donné en paramètre au programme appelant, et le programme appelant appelle la fonction spécifiée via ce paramètre.
La mise en œuvre spécifique est la suivante :
interface IntCompare { public int cmp(int a,int b); } class Cmp1 implements IntCompare { public int cmp(int a,int b) { if(a>b) return 1; else if(a<b) return -1; else return 0; } } class Cmp2 implements IntCompare { public int cmp(int a,int b) { if(a>b) return -1; else if(a<b) return 1; else return 0; } } class HelloWorld { public static void main(String[] args) { int[] array1 = {7,3,19,40,4,7,1}; insertSort(array1,new Cmp1()); System.out.println("升序排列"); for(int i=0;i<array1.length;i++) { System.out.print(array1[i]+" "); } System.out.println(); int[] array2 = {7,3,19,40,4,7,1}; insertSort(array2,new Cmp2()); System.out.println("降序排列"); for(int i =0;i<array2.length;i++) { System.out.print(array2[i]+" "); } } public static void insertSort(int[] a,IntCompare cmp) { if(a!=null) { for(int i=1;i<a.length;i++) { int temp = a[i],j=i; if(cmp.cmp(a[j-1], temp)==1) { while(j>=1&&cmp.cmp(a[j-1],temp)==1) { a[j] = a[j-1]; j--; } } a[j] = temp; } for(int i=1;i<a.length;i++) { int temp = a[i]; int j = i-1; while(j>=0&&cmp.cmp(a[j], temp)==1) { a[j+1] = a[j]; j--; } a[j+1] = temp; } } } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!