You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Isira Seneviratne (Jira)" <ji...@apache.org> on 2020/04/19 05:46:00 UTC

[jira] [Created] (LANG-1538) Implement the functions of the Utils classes as Kotlin extension functions.

Isira Seneviratne created LANG-1538:
---------------------------------------

             Summary: Implement the functions of the Utils classes as Kotlin extension functions.
                 Key: LANG-1538
                 URL: https://issues.apache.org/jira/browse/LANG-1538
             Project: Commons Lang
          Issue Type: New Feature
          Components: lang.*
            Reporter: Isira Seneviratne


This would provide the following advantages:

Conciseness - Kotlin code is overall much more concise than Java code. For instance, the following method in BooleanUtils:
{code:java}
public static Boolean negate(final Boolean bool) {
    if (bool == null) {
        return null;
    }
    return bool.booleanValue() ? Boolean.FALSE : Boolean.TRUE;
}
{code}
can be represented as a single line in Kotlin:
{code:java}
fun Boolean?.negate() = this?.not()
{code}
Compatibility with Java - Kotlin extension functions are compiled as static methods in Java bytecode, so existing code that makes use of Apache Commons Lang will not be affected by the conversion.

Kotlin support - Extension functions can be called in Kotlin code as if they were part of the original class declaration. For instance, the above method can be called as follows:
{code:java}
val bool: Boolean? = null
bool.negate() // returns null
{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)