下面给出接口使用的两个示例分别是:
1)接口与回调
2)Comparator接口
首先是接口与回调:
回调是一种常见的程序设计模式。在这种模式中,可以指出某个特定事件发生时应该采取的动作。
在java.swing包中有一个Timer类,可以使用它在到达给定时间间隔时发出通告,调用传入到这个类中的另一个类的actionPerformed方法,当然,这个方法是接口ActionLisener中声明的,所以要想使用Timer类回调某个类,就必须在某个类中实现ActionListener接口。
Toolkit类中静态方法getDefaultToolkit可以获得默认工具箱。这个工具箱包含有关GUI环境的信息,其中的beep方法可以使操作系统发出通告声音。
在swing包中有个类叫做JOptionPane,其中有一个方法叫做showMessageDialog(Component parent,Onject message);可以显示一个包含一条消息和OK按钮的对话框。这个对话框将位于其parent组件的中央,如果parent为null,对话框将显示在屏幕中央。
基于这些,我们可以写出一个每隔3s在控制台打印一条当前时间并响一次铃声的程序:
代码:
package TimerTest;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.swing.JOptionPane;
import javax.swing.Timer;
public class TimerTest_1 {
public static void main(String[] args) {
ActionListener listener=new TimePrinter();
Timer t=new Timer(3000,listener);
t.start();
JOptionPane.showMessageDialog(null, "Quit program?");
System.exit(0);
}
}
class TimePrinter implements ActionListener{
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("现在时间: "+new Date());
Toolkit.getDefaultToolkit().beep();
}
}
运行结果:
接下来是Comparator接口:
String类中默认实现了Comparable<String>接口,但是是按照字典序的,如果我们想按照字符串的长度进行排序,就需要实现Comparator接口,因为在Arrays类中还有一个sort方法是接受一个数组对象和一个实现了Comparator接口的类的方法的,只要传入这两个参数,即可实现按照自定义顺序的字符串排序。
下面是一个例子:
代码:
package StringLengthCompare;
import java.util.Arrays;
import java.util.Comparator;
public class StringLengthCompareTest {
public static void main(String[] args) {
//首先比较两个字符串
String s1="123";
String s2="45678";
Comparator<String> comp=new LengthComparator();
if(comp.compare(s1, s2)>0) {
System.out.println("\""+s1+"\"比"+"\""+s2+"\""+"长");
}else if(comp.compare(s1, s2)==0) {
System.out.println("\""+s1+"\"和"+"\""+s2+"\""+"一样长");
}else {
System.out.println("\""+s1+"\"比"+"\""+s2+"\""+"短");
}
//在Arrays中还有另一个版本的分类方法可以这样用:
String[] ss={"123","1234","12","12345678","12345","1234"};
System.out.println("排序前的数组:"+Arrays.toString(ss));
Arrays.sort(ss, new LengthComparator());
System.out.println("排序后的数组:"+Arrays.toString(ss));
}
}
class LengthComparator implements Comparator<String>{
@Override
public int compare(String arg0, String arg1) {
return arg0.length()-arg1.length();
}
}
运行结果: