不想你写的public方法被随意调用()

目前问题
在用java开发中会设计很多架构,比如mvvm。在model层中会有很多public方法,因架构设计这些public方法只希望repository去调用,而不希望view或者viewmodule直接去调用。简单的架构还可以自觉遵守规范,但在复杂架构上,会有不熟悉业务同学或者图方便误调用public方法破坏架构规范,造成耦合。
解决方案
开发CallerClass注解,在类/方法上注册可调用的类名,只有注册的类可以调用public方案,未注册的类在调用方法时会在ide上报错,强制遵守架构规范。
使用方法

  1. 引入implement 'com.wish:lintModule:${lastReleaseVersion}'工程
  2. 在需要限制调用者的类或方法上添加CallerClass注解,并注册可调用的类。
@CallerClass(LoginRepository::class) class ApiModel { fun getUser(): User { return User() } }

使用效果
LoginRepository可以正常使用ApiModel并调用getUser方法。

不想你写的public方法被随意调用()
文章图片
image1.png LoginViewModel使用ApiModel就会在ide里报错。

不想你写的public方法被随意调用()
文章图片
image2.png git地址
https://github.com/xyz234wish/LintChecks
使用注意
【不想你写的public方法被随意调用()】此功能类似CallSuper,只是在idea里起到错误提示作用,并没有改变java的public使用规则,仍然能够编译通过。

    推荐阅读