Java 基于sdk android更改方法的可见性

Java 基于sdk android更改方法的可见性,java,android,Java,Android,假设我开发了一个android库XYZ,其中包含方法 animateWithTransition()其中包含与转换api相关的代码(即minsdk=21) animateSimply()具有简单动画 当客户使用XYZ库时,如果他的minsdk

假设我开发了一个android库XYZ,其中包含方法
animateWithTransition()其中包含与转换api相关的代码(即minsdk=21)
animateSimply()具有简单动画

当客户使用XYZ库时,如果他的minsdk<21,他应该能够看到animateWithTransition()作为建议(ctrl+space)。 并且应该只能看到animateSimply() :|


如何做到这一点?

您应该尝试用以下方式构造代码-

    public void performAnimation() {
    if(Build.VERSION.SDK_INT < 21 )
         { 
      // write code for animateSimply function here 
           }
    else
         { 
      // write code for animateWithTransition function here 
           }
        }
public void performAnimation(){
if(Build.VERSION.SDK_INT<21)
{ 
//在这里为animateSimply函数编写代码
}
其他的
{ 
//在这里为animateWithTransition函数编写代码
}
}

这样,您将拥有一个单一的函数(这意味着代码更少,代码更干净),并且测试更容易。另外,您的客户只需调用1个函数,这使他/她更容易使用您的库。

您为什么要这样做?作为库的用户,我不希望在API<21时调用一个函数,在API>21时调用另一个函数。我只需要一个电话,你就应该知道应该使用哪个版本。我希望这样做是为了避免我的客户花时间编写样板代码来确定版本。。有注释@hide wh\ich完全隐藏方法,您可以使用RequiresApi注释。如果希望客户端避免编写样板文件,请参阅@AskQ,然后按照我的建议执行-1方法,该方法执行版本查找并选择要使用的代码分支。这样就没有了样板文件,也没有了使用哪个函数的困惑。@Gabeschen,Kunal感谢它的简单解决方案。但是,java反射或某些自定义注释处理器可能会提供可视性逻辑。我在找。