📅  最后修改于: 2023-12-03 15:27:13.379000             🧑  作者: Mango
在Java中,接口(interface)是一种定义了一组方法但没有实现的抽象数据类型。接口和抽象类类似,但是接口只能包含抽象方法、静态常量和默认方法,不能包含变量和构造方法。接口的作用是定义一套规范,让其他类来实现这个规范,从而实现代码的解耦和重用。
下面是一些Java中常用的接口,以及它们的示例:
Comparable
接口定义了一个compareTo()
方法,用于比较两个对象的大小。如果一个类实现了Comparable
接口,就可以通过Collections.sort()
方法对其进行排序。
public interface Comparable<T> {
public int compareTo(T o);
}
class Person implements Comparable<Person> {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public int compareTo(Person o) {
return age - o.age;
}
}
List<Person> people = new ArrayList<>();
people.add(new Person("Tom", 30));
people.add(new Person("Mary", 25));
Collections.sort(people);
Runnable
接口表示一个可运行的任务,它只有一个run()
方法,用于执行任务。
public interface Runnable {
public void run();
}
class MyTask implements Runnable {
public void run() {
System.out.println("This is my task.");
}
}
Thread t = new Thread(new MyTask());
t.start();
ActionListener
接口用于处理动作事件。当用户执行某个操作时(如点击按钮),就会触发动作事件,然后ActionListener
就会执行相应的逻辑。
public interface ActionListener extends EventListener {
public void actionPerformed(ActionEvent e);
}
class MyButtonActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("Button clicked");
}
}
JButton btn = new JButton("Click me");
btn.addActionListener(new MyButtonActionListener());
Iterable
接口表示能够被迭代的集合。它有一个iterator()
方法,返回一个Iterator
对象,用于遍历集合中的元素。
public interface Iterable<T> {
public Iterator<T> iterator();
}
class MyIterable implements Iterable<Integer> {
private List<Integer> list = new ArrayList<>();
public void add(int i) {
list.add(i);
}
public Iterator<Integer> iterator() {
return list.iterator();
}
}
MyIterable iterable = new MyIterable();
iterable.add(1);
iterable.add(2);
iterable.add(3);
for (Integer i : iterable) {
System.out.println(i);
}
Closeable
接口表示一个可关闭的资源,如文件或网络连接。它有一个close()
方法,用于关闭资源。当需要在代码中创建一个可关闭的资源时,应该让该资源实现Closeable
接口。
public interface Closeable extends AutoCloseable {
public void close() throws IOException;
}
class MyResource implements Closeable {
public void close() throws IOException {
System.out.println("Close my resource.");
}
}
try (MyResource r = new MyResource()) {
// do something
}
以上是一些Java中常用的接口。使用接口可以让代码更加规范、灵活和容易重用,同时也能够满足不同场景的需要。