用于将返回值限制在两个值之间的最短代码

Pie*_*rtz 2 java android if-statement

我的Android应用程序中有一个方法,它采用动态设置的字体大小,并返回一个比例较小的字体大小.它从getTextSize()获取的值用于标题,较小的out值用于正文文本.目前它写成:

public int getSmallerTextSize(){
    int textSize = (int)Math.round(getTextSize() * 0.8);

    if(textSize > 20){
        textSize = 20;
    }else if(textSize < 10){
        textSize = 10;
    }

    return textSize;
}
Run Code Online (Sandbox Code Playgroud)

我想找一个更短,更少笨重的方式来表达这一点.一种选择是:

public int getSmallerTextSize(){
    int textSize = (int)Math.round(getTextSize() * 0.8);

    textSize = textSize > 10 ? textSize : 10;
    textSize = textSize > 20 ? 20 : textSize;

    return textSize;
}
Run Code Online (Sandbox Code Playgroud)

但同样:很多代码都是如此简单.有人可以建议一个优雅的优选单行代码来表达这个吗?

dre*_*ash 10

只需使用以下表达式:

textSize = Math.min(Math.max(textSize,10),20);
Run Code Online (Sandbox Code Playgroud)