編程已經(jīng)有一段時(shí)間,主要做Android開發(fā)枝笨,經(jīng)常使用的是Java語言袁铐,在編程上,應(yīng)該是三流水準(zhǔn)伺帘,屬于不求甚解的那種昭躺,所以很多基礎(chǔ)東西掌握并不扎實(shí),下面記載一下經(jīng)澄奔蓿看到领炫,但自己編程上很少想到的一種interface用法;
通常自己開發(fā)中使用interface主要用做回調(diào)张咳,返回值通常為空帝洪,那如果返回值不為空的情況似舵,其實(shí)可以看做是將方法作為參數(shù)在使用,從而讓代碼更加靈活葱峡;
假設(shè)有個(gè)Person類砚哗,要獲取不同年齡的person,而這個(gè)條件可能是年齡大于20砰奕,還有可能是年齡在10~15之間蛛芥,如果按照普通的方式去實(shí)現(xiàn),則需要寫兩個(gè)不同的方法军援,方法一傳一個(gè)參數(shù)仅淑,方法二傳兩個(gè)參數(shù);那現(xiàn)在使用接口就可以通過一個(gè)接口方法來實(shí)現(xiàn)胸哥;
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())){ //根據(jù)其返回值涯竟,判斷該人是否符合條件
person.print();
}
}
}
public interface ageChecker{
public boolean checkAge(int age);//返回值不為空,便于調(diào)用的地方使用其返回值
}
}
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() {//作為參數(shù)傳入空厌,然后在接口方法中定義條件
@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;
}
});
}
}
運(yùn)行后輸出結(jié)果:
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