How to use type check in Kotlin?










0















In Kotlin doc, type check use is but when I write this code



var a="hello"
if (a is String) print(a)


There is a warning



warning: check for instance is always 'true'
if (a is String) print(a)
^


Thank you very much for all answers.










share|improve this question
























  • In this code, a will always be a string. That's what the compiler tells you. But you can use it in situations like this: kotlinlang.org/docs/reference/typecasts.html#smart-casts

    – Sergio Tulentsev
    Nov 10 '18 at 19:02












  • Well it is always a string.

    – EpicPandaForce
    Nov 10 '18 at 20:28















0















In Kotlin doc, type check use is but when I write this code



var a="hello"
if (a is String) print(a)


There is a warning



warning: check for instance is always 'true'
if (a is String) print(a)
^


Thank you very much for all answers.










share|improve this question
























  • In this code, a will always be a string. That's what the compiler tells you. But you can use it in situations like this: kotlinlang.org/docs/reference/typecasts.html#smart-casts

    – Sergio Tulentsev
    Nov 10 '18 at 19:02












  • Well it is always a string.

    – EpicPandaForce
    Nov 10 '18 at 20:28













0












0








0








In Kotlin doc, type check use is but when I write this code



var a="hello"
if (a is String) print(a)


There is a warning



warning: check for instance is always 'true'
if (a is String) print(a)
^


Thank you very much for all answers.










share|improve this question
















In Kotlin doc, type check use is but when I write this code



var a="hello"
if (a is String) print(a)


There is a warning



warning: check for instance is always 'true'
if (a is String) print(a)
^


Thank you very much for all answers.







kotlin typechecking






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 10 '18 at 21:56









D Manokhin

584219




584219










asked Nov 10 '18 at 18:59









Ray ChakritRay Chakrit

173




173












  • In this code, a will always be a string. That's what the compiler tells you. But you can use it in situations like this: kotlinlang.org/docs/reference/typecasts.html#smart-casts

    – Sergio Tulentsev
    Nov 10 '18 at 19:02












  • Well it is always a string.

    – EpicPandaForce
    Nov 10 '18 at 20:28

















  • In this code, a will always be a string. That's what the compiler tells you. But you can use it in situations like this: kotlinlang.org/docs/reference/typecasts.html#smart-casts

    – Sergio Tulentsev
    Nov 10 '18 at 19:02












  • Well it is always a string.

    – EpicPandaForce
    Nov 10 '18 at 20:28
















In this code, a will always be a string. That's what the compiler tells you. But you can use it in situations like this: kotlinlang.org/docs/reference/typecasts.html#smart-casts

– Sergio Tulentsev
Nov 10 '18 at 19:02






In this code, a will always be a string. That's what the compiler tells you. But you can use it in situations like this: kotlinlang.org/docs/reference/typecasts.html#smart-casts

– Sergio Tulentsev
Nov 10 '18 at 19:02














Well it is always a string.

– EpicPandaForce
Nov 10 '18 at 20:28





Well it is always a string.

– EpicPandaForce
Nov 10 '18 at 20:28












2 Answers
2






active

oldest

votes


















3














In your example, "hello" is a String literal. In Kotlin, even when you omit the type for a variable, its type is inferred. The compiler infers the type for var a from the initializer expression, and so the type of a is String. The warning you are getting means that the expression a that you check is always a String.



Your variable declaration is equivalent to var a: String = "hello", i.e. the variable may only reference a String, assigning any other type is not allowed.



For example, if you change the variable declaration to var a: Any = "hello", there will be no warning since the variable now may hold an instance of any type, not just a String.






share|improve this answer
































    0














    I just figured out how to use type check by learning from Swift



    open class fruit 
    class banana: fruit()

    fun test( a: fruit )
    if (a is banana) print("ok")


    test(banana())





    share|improve this answer























    • That's good, but how does this answer your own question about the warning?

      – Erwin Bolwidt
      Nov 11 '18 at 8:08










    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53242388%2fhow-to-use-type-check-in-kotlin%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    3














    In your example, "hello" is a String literal. In Kotlin, even when you omit the type for a variable, its type is inferred. The compiler infers the type for var a from the initializer expression, and so the type of a is String. The warning you are getting means that the expression a that you check is always a String.



    Your variable declaration is equivalent to var a: String = "hello", i.e. the variable may only reference a String, assigning any other type is not allowed.



    For example, if you change the variable declaration to var a: Any = "hello", there will be no warning since the variable now may hold an instance of any type, not just a String.






    share|improve this answer





























      3














      In your example, "hello" is a String literal. In Kotlin, even when you omit the type for a variable, its type is inferred. The compiler infers the type for var a from the initializer expression, and so the type of a is String. The warning you are getting means that the expression a that you check is always a String.



      Your variable declaration is equivalent to var a: String = "hello", i.e. the variable may only reference a String, assigning any other type is not allowed.



      For example, if you change the variable declaration to var a: Any = "hello", there will be no warning since the variable now may hold an instance of any type, not just a String.






      share|improve this answer



























        3












        3








        3







        In your example, "hello" is a String literal. In Kotlin, even when you omit the type for a variable, its type is inferred. The compiler infers the type for var a from the initializer expression, and so the type of a is String. The warning you are getting means that the expression a that you check is always a String.



        Your variable declaration is equivalent to var a: String = "hello", i.e. the variable may only reference a String, assigning any other type is not allowed.



        For example, if you change the variable declaration to var a: Any = "hello", there will be no warning since the variable now may hold an instance of any type, not just a String.






        share|improve this answer















        In your example, "hello" is a String literal. In Kotlin, even when you omit the type for a variable, its type is inferred. The compiler infers the type for var a from the initializer expression, and so the type of a is String. The warning you are getting means that the expression a that you check is always a String.



        Your variable declaration is equivalent to var a: String = "hello", i.e. the variable may only reference a String, assigning any other type is not allowed.



        For example, if you change the variable declaration to var a: Any = "hello", there will be no warning since the variable now may hold an instance of any type, not just a String.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Nov 10 '18 at 20:26

























        answered Nov 10 '18 at 20:24









        hotkeyhotkey

        60.9k13180199




        60.9k13180199























            0














            I just figured out how to use type check by learning from Swift



            open class fruit 
            class banana: fruit()

            fun test( a: fruit )
            if (a is banana) print("ok")


            test(banana())





            share|improve this answer























            • That's good, but how does this answer your own question about the warning?

              – Erwin Bolwidt
              Nov 11 '18 at 8:08















            0














            I just figured out how to use type check by learning from Swift



            open class fruit 
            class banana: fruit()

            fun test( a: fruit )
            if (a is banana) print("ok")


            test(banana())





            share|improve this answer























            • That's good, but how does this answer your own question about the warning?

              – Erwin Bolwidt
              Nov 11 '18 at 8:08













            0












            0








            0







            I just figured out how to use type check by learning from Swift



            open class fruit 
            class banana: fruit()

            fun test( a: fruit )
            if (a is banana) print("ok")


            test(banana())





            share|improve this answer













            I just figured out how to use type check by learning from Swift



            open class fruit 
            class banana: fruit()

            fun test( a: fruit )
            if (a is banana) print("ok")


            test(banana())






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Nov 11 '18 at 7:08









            Ray ChakritRay Chakrit

            173




            173












            • That's good, but how does this answer your own question about the warning?

              – Erwin Bolwidt
              Nov 11 '18 at 8:08

















            • That's good, but how does this answer your own question about the warning?

              – Erwin Bolwidt
              Nov 11 '18 at 8:08
















            That's good, but how does this answer your own question about the warning?

            – Erwin Bolwidt
            Nov 11 '18 at 8:08





            That's good, but how does this answer your own question about the warning?

            – Erwin Bolwidt
            Nov 11 '18 at 8:08

















            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53242388%2fhow-to-use-type-check-in-kotlin%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

            Edmonton

            Crossroads (UK TV series)