How to use type check in Kotlin?









up vote
0
down vote

favorite












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 at 19:02











  • Well it is always a string.
    – EpicPandaForce
    Nov 10 at 20:28














up vote
0
down vote

favorite












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 at 19:02











  • Well it is always a string.
    – EpicPandaForce
    Nov 10 at 20:28












up vote
0
down vote

favorite









up vote
0
down vote

favorite











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 at 21:56









D Manokhin

52418




52418










asked Nov 10 at 18:59









Ray Chakrit

72




72











  • 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 at 19:02











  • Well it is always a string.
    – EpicPandaForce
    Nov 10 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 at 19:02











  • Well it is always a string.
    – EpicPandaForce
    Nov 10 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 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 at 19:02













Well it is always a string.
– EpicPandaForce
Nov 10 at 20:28




Well it is always a string.
– EpicPandaForce
Nov 10 at 20:28












2 Answers
2






active

oldest

votes

















up vote
3
down vote













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





























    up vote
    0
    down vote













    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 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',
    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








    up vote
    3
    down vote













    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


























      up vote
      3
      down vote













      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
























        up vote
        3
        down vote










        up vote
        3
        down vote









        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 at 20:26

























        answered Nov 10 at 20:24









        hotkey

        57.9k11168186




        57.9k11168186






















            up vote
            0
            down vote













            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 at 8:08














            up vote
            0
            down vote













            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 at 8:08












            up vote
            0
            down vote










            up vote
            0
            down vote









            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 at 7:08









            Ray Chakrit

            72




            72











            • That's good, but how does this answer your own question about the warning?
              – Erwin Bolwidt
              Nov 11 at 8:08
















            • That's good, but how does this answer your own question about the warning?
              – Erwin Bolwidt
              Nov 11 at 8:08















            That's good, but how does this answer your own question about the warning?
            – Erwin Bolwidt
            Nov 11 at 8:08




            That's good, but how does this answer your own question about the warning?
            – Erwin Bolwidt
            Nov 11 at 8:08

















             

            draft saved


            draft discarded















































             


            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







            這個網誌中的熱門文章

            How to read a connectionString WITH PROVIDER in .NET Core?

            Node.js Script on GitHub Pages or Amazon S3

            Museum of Modern and Contemporary Art of Trento and Rovereto