对于一些刚学了java 接口的一些新手,在实现一些自已的监听的时候总是摸不着脑袋,其实用接口可以轻松解决很多问题。好了不废话,直接上代码。
Demo1
/**
*要用到的接口
*/
public Interface xxxListener{
void Success();
}
public class A{
//接口的引用
private xxxListener listener;
//给listener赋值,实例化实现类
public void setxxxListener(xxxListener listener){
this.listner=listener;
}
//进行死循环
new Thread (new Runnable(){
while(true){
//判断listener是否为空
if(listener!=null){
//不为空调用Success()方法.无限的调用到达一个时刻监听的作用.
listener.Success();
}
}
}).start();
}
public class B
{
//为A的对象设置监听器
new A().setxxxListener(new xxxListener(){
//匿名类中实现接口方法
public void Success(){
//Some logical business code 逻辑代码
//此方法被无限次调用,知道A中的死循环停止.
}
});
}
好了 这是第一种比较常用的接口的使用。下面到第二种:
Demo2
/**
*
*这是用到的一个接口
*/
public interface myInterface{
void Success();
}
public class A
{
/**
* 内部类
* 私有的类外部类无法使用,不暴露类A里面的信息
* 但是接口是暴露的
*/
private class M implements myInterface{
public void Success(){
//Some logical business code
};
}
//获取M实例的方法
public M getMInstance(){
retrun new M();
}
}
/**
*在A中直接就实现了接口,而不是像Demo1中的在A中设置监听的方法,在B中进行监听和实现接口。
*在B中直接调用A中实现的接口方法。
*/
public class B
{
//除了A类,其他类无法访问M类,但是可以访问M类实现的接口
myInterface mi=(myInterface)new A().getMInstance();
//调用 M类中实现的接口方法 ,方法中的逻辑代码被运行.
mi.Success();
}
好了 !两种接口的常用方式就结束了。
-------------------------------------------------------------------------------------------------------------------------------------
如果看到这里还没看懂的话,博主建议你把下面的代码复制到工具里面运行一遍,看懂了在来看多次以上两种接口常用方式
public class D {
/**
* @param args
*/
public static void main(String[] args) {
//得到 c类对象,但是private 修饰的类 无法被使用,因此 将类c 转换为 icface 接口
icface f= (icface)new A().getC();
//调用此方法,接口的实现方法被调用.
f.ic_f();
}
}
-------------------
这是个接口
public interface icface {
void ic_f();
}
-----------------
public class A {
// public c mc;
public c getC(){
// mc=new c();
return new c();
}
/**
* 经过 private 修饰 c 类 ,c类已经不可以被外部引用和访问了,c类的信息安全了
* 要访问c类 暴露出来的东西,不能直接通过 c类来访问 数据 ,要通过实现的接口 来访问
* @author Administrator
*
*/
private class c implements icface{
public void f(){
System.out.print("调用了c中的f方法");
}
//实现接口的抽象方法
@Override
public void ic_f() {
f();
}
}
}
------------------------
运行结果:
Console:调用了c中的f方法
------------------------