美文网首页
不想你写的public方法被随意调用?

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

作者: 迷茫的wish | 来源:发表于2020-08-10 17:43 被阅读0次

目前问题

在用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方法。


image1.png

LoginViewModel使用ApiModel就会在ide里报错。


image2.png

git地址

https://github.com/xyz234wish/LintChecks

使用注意

此功能类似CallSuper,只是在idea里起到错误提示作用,并没有改变java的public使用规则,仍然能够编译通过。

相关文章

  • 不想你写的public方法被随意调用?

    目前问题 在用java开发中会设计很多架构,比如mvvm。在model层中会有很多public方法,因架构设计这些...

  • Java——Join()

    调用某个线程的Join方法时,这个方法会挂起调用线程,直到被调用线程结束执行,调用线程才会继续执行。 public...

  • SJ64 走进Android,走进Java

    声明方法 [修饰符]:决定方法能被谁调用,有public、private、protect [返回类型]:方法返回值...

  • spring声明式事务的一些坑

    总结 只支持public方法 无法支持内部调用 场景和原理分析 场景 只支持public方法 无法支持内部调用 当...

  • 2019-11-29void和static void区别

    public void 修饰是非静态方法,该类方法属于对象,在对象初始化(new Object())后才能被调用;...

  • 04-面向对象语法03

    一、set方法和get方法 1.set方法和get方法的使用场合 @public的成员可以被随意赋值,应该使用se...

  • 方法的调用回顾总结

    静态方法只能调用静态的 非静态方法可以调用静态的package oop; public class Demon2 ...

  • set方法和get方法

    1.set方法和get方法的使用场合@public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的...

  • 【OC语言】set方法和get方法

    1.set方法和get方法的使用场合@public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的...

  • 在静态方法里调用spring注入的方法

    在静态方法里直接调用非静态方法是不行的。 那如何调用spring注入的方法呢? @Component public...

网友评论

      本文标题:不想你写的public方法被随意调用?

      本文链接:https://www.haomeiwen.com/subject/rjwjdktx.html