美文网首页
Interface特殊用法小记

Interface特殊用法小记

作者: Wilson_PP | 来源:发表于2017-05-09 11:30 被阅读0次

编程已经有一段时间,主要做Android开发,经常使用的是Java语言,在编程上,应该是三流水准,属于不求甚解的那种,所以很多基础东西掌握并不扎实,下面记载一下经常看到,但自己编程上很少想到的一种interface用法;
通常自己开发中使用interface主要用做回调,返回值通常为空,那如果返回值不为空的情况,其实可以看做是将方法作为参数在使用,从而让代码更加灵活;
假设有个Person类,要获取不同年龄的person,而这个条件可能是年龄大于20,还有可能是年龄在10~15之间,如果按照普通的方式去实现,则需要写两个不同的方法,方法一传一个参数,方法二传两个参数;那现在使用接口就可以通过一个接口方法来实现;

public class Person {
private int age;
private String name;
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public void print(){
    System.out.println("age = "+age +"   name = "+name);
}
}
public class TestInterface {
public void getAge(List<Person> list, ageChecker checker){
    for(Person person : list){
        if(checker.checkAge(person.getAge())){ //根据其返回值,判断该人是否符合条件
            person.print();
        }
    }
}
public interface  ageChecker{
    public boolean checkAge(int age);//返回值不为空,便于调用的地方使用其返回值
}
}
public class main {
public static void main(String[] args) {
    List<Person> list = new ArrayList<Person>();
    for(int i=0 ; i< 25; i++){
        Person person = new Person();
        person.setAge(i);
        person.setName("name"+i);
        list.add(person);
    }
    TestInterface test = new TestInterface();
            //打印年龄大于20岁的人
    test.getAge(list, new ageChecker() {//作为参数传入,然后在接口方法中定义条件
        @Override
        public boolean checkAge(int age) {
            // TODO Auto-generated method stub
            if(age > 20) return true;  //条件写在这里
            return false;
        }
    });
            //打印年龄在10~15岁之间的人
    test.getAge(list, new ageChecker() {
        @Override
        public boolean checkAge(int age) {
            // TODO Auto-generated method stub
            if(age >=10 && age <= 15) return true;//条件写在这里
            return false;
        }
    });
    
}
}

运行后输出结果:
age = 21 name = name21
age = 22 name = name22
age = 23 name = name23
age = 24 name = name24

age = 10 name = name10
age = 11 name = name11
age = 12 name = name12
age = 13 name = name13
age = 14 name = name14
age = 15 name = name15

相关文章

网友评论

      本文标题:Interface特殊用法小记

      本文链接:https://www.haomeiwen.com/subject/smubtxtx.html