注解与函数接口

简单讨论一下注解和函数接口。

注解

在Java中,我们很少见到注解,主要可能也就实现接口的方法或重写父类的方法,见到@Override这个注解。

那么注解是干什么的的呢?

我理解,可以校验,还是比如重写,你加不加@Override,都可以重写方法或实现方法,但是它可以在写的时候,判断是否把重写的方法名写对了。

也可以提醒程序员,这个方法不可用不建议用,比如@Deprecated注解,它告诉你这个方法过时了,它可能有问题,有新的更好的解决方法。

也可以在编译器提示程序员,这个方法是干啥的,参数是啥,返回类型是啥,做成文档注解。

还可以预加载,在学Serlvet或者Spring,总是要配置各种各样的xml。而注解,把这些xml配置以注解的形式告诉编译器去哪找。给你省去了这些麻烦重复的事,让你有更多的事情去写代码。

注解在Java se中可能用的很少,但在以后的学习,注解可能越用越多,可能注解比代码还多。

我也只是了解,会用。当然你也可以写写自己的注解。

函数接口

它也是一个注解,@FunctionalInterface ,为啥我会讲它呢,因为lambda,lambda在其他语言就是函数,只是在Java中,没函数这个概念,所以才有这个注解。

函数简单的定义就是F(x) = y。输入0或多个数,得到一个答案。

函数接口就这样,你只可以在这个接口,定义一个方法,这个方法输入0或多个值,得到一个结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class FunctionTest {
public static void main(String[] args) {
Test t = new Test("hello",new Ifunc() {
@Override
public String printStr(String str) {
return str+",World";
}
});
t.printStr();
System.out.println("----------------------");
Test t1 = new Test("你好!", str->str+"欢迎光临");
t1.printStr();
}
}
@FunctionalInterface //注解说明该接口为函数接口,那它也只有一个方法。和@Override一样起校验作用
interface Ifunc{
String printStr(String str);
}
class Test{
private String str;
private Ifunc t;
public Test(String str, Ifunc t) {
super();
this.str = str;
this.t = t;
}
void printStr() {
System.out.println(t.printStr(str));
}
}

当然还是为lambda服务,看的懂吗?看起来有点乱,其实就是一个类,输入一个字符串,而输出由函数接口里实现的方法完成的。

写这个看着其烦的,明明输出一个字符串加其他内容就行。还定义一个接口和类,类传入值,接口实现方法,类的输出就是接口一系列的操作得到的结果。

但主要还是要理解lambda。文笔不好,见谅…..

谢谢您对我的支持
0%