(1)实现接口时参数列表中的注解映射并不会继承
在实现接口时,如果参数列表中包含注解,那么这些注解不会被子类或实现类继承。这是因为注解本身并不是方法的一部分,而是一种元数据,用于提供关于方法参数或返回值的附加信息。
在Java中,注解可以用于方法参数、返回值、类、方法、字段等等,它们提供了一种声明式的方式来描述这些元素的属性或行为。注解的使用可以帮助代码编写者更好地理解代码,也可以提供一些额外的功能,例如生成文档、验证参数等等。
但是需要注意的是,注解并不是方法的一部分,也不会影响方法的行为。因此,即使在接口中声明了带注解的方法,子类或实现类也不会自动继承这些注解。如果需要在子类或实现类中使用相同的注解,需要手动在子类或实现类的方法上添加相应的注解。
例如,下面是一个带注解的接口:
public interface MyInterface {
void doSomething(@NotNull String arg1, @Min(0) int arg2);
}
这个接口中有两个参数,分别使用了@NotNull和@Min注解。如果一个实现类实现了这个接口,它并不会自动继承这些注解,需要手动在实现类的方法上添加相应的注解,例如:
public class MyImpl implements MyInterface {
@Override
public void doSomething(@NotNull String arg1, @Min(0) int arg2) {
// 实现方法
}
}
在这个实现类中,重写的方法也带有@NotNull和@Min注解,这样就可以让编译器和静态分析工具在编译时对方法参数进行验证。
(2)Feign的URLconnection和HttpFeign哪个更好?
对于使用Java标准库中的HttpURLConnection发送HTTP请求的Feign客户端和使用第三方HTTP客户端库OkHttp发送HTTP请求的HttpFeign客户端,哪个更好取决于具体的需求和应用场景。
HttpURLConnection是Java标准库中自带的HTTP客户端,使用URLConnectionClient发送HTTP请求可以获得良好的跨平台兼容性,无需引入额外的依赖库,也不需要进行特殊的配置。然而,相对于第三方HTTP客户端库,HttpURLConnection的性能和功能可能会受到一些限制,例如请求重试、连接池、缓存等方面。
OkHttp是一个广泛使用的第三方HTTP客户端库,使用HttpFeign发送HTTP请求可以获得更好的性能和可靠性,同时还提供了更丰富的功能和配置选项。但是,使用第三方HTTP客户端库需要引入额外的依赖库,并且需要进行一定的配置。
因此,选择使用哪个底层HTTP客户端实现应该综合考虑应用场景、性能需求、兼容性等因素。在一些对性能要求不高、跨平台兼容性要求较高的场景下,可以考虑URLConnectionClient;在一些对性能要求较高、需要较为复杂的功能和配置的场景下,可以考虑使用HttpFeign。