工学1号馆

home

« | 返回首页 | »

java内部接口

By Wu Yudong on November 06, 2015

这篇文章介绍一下java中的内部接口

什么是java中的内部接口?

内部接口 就是接口的内部再定义一个接口,例如:

public interface Map {
	interface Entry{
		int getKey();
	}
 
	void clear();
}

为什么使用内部接口?

有如下几个原因:

  • 实现只在一个地方使用的逻辑接口的方式.
  • 增强封装.
  • 增强代码的可读性与可维护性.

一个内部接口的例子是java标准库中的 java.util.Map Java.util.Map.Entry. 这里的 java.util.Map同时作为一个namespace. Entry并不属于全局范围i,意味着很多的条目属于Entries 而不是Map的

内部接口怎样工作?

为了说明内部接口怎样工作,我们可以对比嵌套类. 嵌套类可以被视为在外类中声明的一种规则方法。因为一个方法可以声明为静态或非静态的,类似的,嵌套类可以是静态的和非静态的。静态类像静态方法,它只能通过对象访问外部类成员。非静态类可以访问外部类的任何成员。

java-nested-classes

因为接口不能被实例化,于是内部接口是静态的才有意义。因此,默认的接口是静态的,无论你是否手动添加static

一个内部接口的例子?

Map.java

public interface Map {
	interface Entry{
		int getKey();
	}
 
	void clear();
}

MapImpl.java

public class MapImpl implements Map {
 
 
	class ImplEntry implements Map.Entry{
		public int getKey() {
			return 0;
		}		
	}
 
	@Override
	public void clear() {
		//clear
	}
}

如果文章对您有帮助,欢迎点击下方按钮打赏作者

Comments

No comments yet.
To verify that you are human, please fill in "七"(required)