• 周四. 8月 11th, 2022

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

Java接口interface field及method

admin

11月 28, 2021

Java编程规范中对interface中的域有几点说明

一、接口中的field

一个是interface域必须有初始化器,也就是说其必须被显式初始化。
二是不能使用文本定义顺序靠后的字段来给前边字段赋值来初始化。
三是不能使用自身对自身赋值来初始化。
四是接口域的初始化器中不能出现super、this关键字,除非是出现在匿名类的body中。

1、在任何一个接口的body中声明的field,隐式的都表示为public、static、final的。

2、当一个接口继承的多个接口中包含同样的字段声明时,只要在接口中不直接简单地使用名称来引用该字段便不会出错。否则便会报compile-time error。因为这样的引用是有歧义的,引用的是哪一个?

3、当一个接口从不同的路径继承了同一个成员字段时,不会发生歧义,因为本质上就是一个接口字段。

二、接口中的method

1、接口中的方法其修饰符不需显式指明,都是public。
2、如果需要继承接口的类无需实现接口中的方法,则接口中的该方法可声明成default。
3、接口中声明的不带body的方法隐式的都是abstract方法,无需显式声明。
4、接口不继承static方法。所以接口中static修饰的方法也必须要有方法体。
5、非抽象类继承接口时必须要实现其不含方法体的方法。
6、另外,接口中定义default方法是为其继承类提供方便,子类不用定义,但是却需要使用这一功能。所以加了default修饰的接口方法都必须有方法体。
7、在接口中定义一个成员类型,会隐藏其所有继承的接口中的相同名称的成员

三、在mapstrcut中的使用

/**
 * @author ssozh
 * @data 2021/8/13
 */
@Mapper(componentModel = "spring")
public interface PersonBeanMapper {

    PersonBeanMapper INSTANCE = Mappers.getMapper(PersonBeanMapper.class);

    PersonVO toVO(Person person);
}

实际上,我们知道mapstruct是APT的插件,我们也可以通过依赖注入的方式把这个Mapper注入进我们要使用的方法中:

    @Resource
    private PersonBeanMapper personBeanMapper;

引用自:https://blog.csdn.net/weixin_43878293/article/details/103332570

发表评论

您的电子邮箱地址不会被公开。