1、interface中定义常量
public interface ConstVal {
String MODULE_NAME = "ModuleName";
String ENTITY = "Entity";
String SERVICE = "Service";
String SERVICE_IMPL = "ServiceImpl";
String MAPPER = "Mapper";
String XML = "Xml";
String CONTROLLER = "Controller";
String OTHER = "Other";
String PARENT = "Parent";
String JAVA_TMPDIR = "java.io.tmpdir";
String UTF8 = StandardCharsets.UTF_8.name();
String UNDERLINE = "_";
String JAVA_SUFFIX = StringPool.DOT_JAVA;
String KT_SUFFIX = ".kt";
String XML_SUFFIX = ".xml";
/**
* 实体模板路径
*/
String TEMPLATE_ENTITY_JAVA = "/templates/entity.java";
/**
* 实体模板路径(kotlin模板)
*/
String TEMPLATE_ENTITY_KT = "/templates/entity.kt";
/**
* 控制器模板路径
*/
String TEMPLATE_CONTROLLER = "/templates/controller.java";
/**
* Mapper模板路径
*/
String TEMPLATE_MAPPER = "/templates/mapper.java";
/**
* MapperXml模板路径
*/
String TEMPLATE_XML = "/templates/mapper.xml";
/**
* Service模板路径
*/
String TEMPLATE_SERVICE = "/templates/service.java";
/**
* ServiceImpl模板路径
*/
String TEMPLATE_SERVICE_IMPL = "/templates/serviceImpl.java";
String VM_LOAD_PATH_KEY = "file.resource.loader.class";
String VM_LOAD_PATH_VALUE = "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader";
String SUPER_MAPPER_CLASS = "com.baomidou.mybatisplus.core.mapper.BaseMapper";
String SUPER_SERVICE_CLASS = "com.baomidou.mybatisplus.extension.service.IService";
String SUPER_SERVICE_IMPL_CLASS = "com.baomidou.mybatisplus.extension.service.impl.ServiceImpl";
interface ComplaintType {
int URL = 0;
int USER = 1;
int GROUP = 23;
}
}
2、 interface与abstract的相同点:
(1)都是没有具体实现,需要继承类进行实现;
(2)无法直接调用;
(3)interface算是抽象类的特例;
3、 interface和abstract的区别:
(1)interface无构造方法,abstract类可以有构造方法;
(2)abstract类中可以有普通成员变量和普通成员方法,interface 只有抽象方法(可以有普通成员方法,但不建议);
(3)abstract类的访问类型可以是public或是protected,但interface默认的访问类型就是public abstract
4、内部接口
4.1 内部接口也称为嵌套接口,即在一个接口内部定义另一个接口。举个例子,Entry接口定义在Map接口里面,如下代码:
public interface Map {
interface Entry{
int getKey();
}
void clear();
}
4.2 使用内部接口的理由
如下是一些强有力的理由:
• 一种对那些在同一个地方使用的接口进行逻辑上分组;
• 封装思想的体现;
• 嵌套接口可以增强代码的易读性和可维护性;
在Java标准库中使用内部接口的一个例子是java.util.Map和Java.util.Map.Entry。这里java.util.Map同样被当成命名空间使用。Entry并不属于全局作用域范围.
4.3 内部类如何工作
内部类可以被认为是一个外部类内部定义的一个常规方法。因为一个方法可以被声明为静态和非静态,类似的内部类也可以被声明为静态和非静态。静态类类似于静态方法,它只能访问外部类的静态成员属性。非静态类可以访问外部类的所有成员属性。