Kotlin: inherit from a nested Java class










0















I have these Java classes in a .java file:



public class BaseOuter

public class BaseInner





And I have these Kotlin classes in a .kt file:



class DerivedOuter : BaseOuter()

class DerivedInner : BaseOuter.BaseInner()





This Kotlin code in Android Studio gives me an "Unresolved reference: BaseInner" error. So I can inherit from the BaseOuter class, but deriving from Java's BaseOuter.BaseInner is not syntactically correct (but if I try the same with inheritance from Kotlin classes I get no errors).



Somehow I can't google a same example or the question.










share|improve this question



















  • 1





    For one thing, this doesn't work, because you have an inner class in Java but a static member class in Kotlin. For a class to be inner in Kotlin, you need to mark it with the inner keyword: inner class DerivedInner ...

    – Erwin Bolwidt
    Nov 14 '18 at 23:34











  • @ErwinBolwidt thanks

    – Emil Kabirov
    Nov 14 '18 at 23:42











  • You're welcome. I didn't think it would solve it (because the error says it can't resolve the reference which doesn't sound like the problem I mentioned) and I didn't have time to try it. Hence only a comment

    – Erwin Bolwidt
    Nov 15 '18 at 0:15















0















I have these Java classes in a .java file:



public class BaseOuter

public class BaseInner





And I have these Kotlin classes in a .kt file:



class DerivedOuter : BaseOuter()

class DerivedInner : BaseOuter.BaseInner()





This Kotlin code in Android Studio gives me an "Unresolved reference: BaseInner" error. So I can inherit from the BaseOuter class, but deriving from Java's BaseOuter.BaseInner is not syntactically correct (but if I try the same with inheritance from Kotlin classes I get no errors).



Somehow I can't google a same example or the question.










share|improve this question



















  • 1





    For one thing, this doesn't work, because you have an inner class in Java but a static member class in Kotlin. For a class to be inner in Kotlin, you need to mark it with the inner keyword: inner class DerivedInner ...

    – Erwin Bolwidt
    Nov 14 '18 at 23:34











  • @ErwinBolwidt thanks

    – Emil Kabirov
    Nov 14 '18 at 23:42











  • You're welcome. I didn't think it would solve it (because the error says it can't resolve the reference which doesn't sound like the problem I mentioned) and I didn't have time to try it. Hence only a comment

    – Erwin Bolwidt
    Nov 15 '18 at 0:15













0












0








0








I have these Java classes in a .java file:



public class BaseOuter

public class BaseInner





And I have these Kotlin classes in a .kt file:



class DerivedOuter : BaseOuter()

class DerivedInner : BaseOuter.BaseInner()





This Kotlin code in Android Studio gives me an "Unresolved reference: BaseInner" error. So I can inherit from the BaseOuter class, but deriving from Java's BaseOuter.BaseInner is not syntactically correct (but if I try the same with inheritance from Kotlin classes I get no errors).



Somehow I can't google a same example or the question.










share|improve this question
















I have these Java classes in a .java file:



public class BaseOuter

public class BaseInner





And I have these Kotlin classes in a .kt file:



class DerivedOuter : BaseOuter()

class DerivedInner : BaseOuter.BaseInner()





This Kotlin code in Android Studio gives me an "Unresolved reference: BaseInner" error. So I can inherit from the BaseOuter class, but deriving from Java's BaseOuter.BaseInner is not syntactically correct (but if I try the same with inheritance from Kotlin classes I get no errors).



Somehow I can't google a same example or the question.







java inheritance kotlin nested






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 14 '18 at 23:28







Emil Kabirov

















asked Nov 14 '18 at 23:23









Emil KabirovEmil Kabirov

217




217







  • 1





    For one thing, this doesn't work, because you have an inner class in Java but a static member class in Kotlin. For a class to be inner in Kotlin, you need to mark it with the inner keyword: inner class DerivedInner ...

    – Erwin Bolwidt
    Nov 14 '18 at 23:34











  • @ErwinBolwidt thanks

    – Emil Kabirov
    Nov 14 '18 at 23:42











  • You're welcome. I didn't think it would solve it (because the error says it can't resolve the reference which doesn't sound like the problem I mentioned) and I didn't have time to try it. Hence only a comment

    – Erwin Bolwidt
    Nov 15 '18 at 0:15












  • 1





    For one thing, this doesn't work, because you have an inner class in Java but a static member class in Kotlin. For a class to be inner in Kotlin, you need to mark it with the inner keyword: inner class DerivedInner ...

    – Erwin Bolwidt
    Nov 14 '18 at 23:34











  • @ErwinBolwidt thanks

    – Emil Kabirov
    Nov 14 '18 at 23:42











  • You're welcome. I didn't think it would solve it (because the error says it can't resolve the reference which doesn't sound like the problem I mentioned) and I didn't have time to try it. Hence only a comment

    – Erwin Bolwidt
    Nov 15 '18 at 0:15







1




1





For one thing, this doesn't work, because you have an inner class in Java but a static member class in Kotlin. For a class to be inner in Kotlin, you need to mark it with the inner keyword: inner class DerivedInner ...

– Erwin Bolwidt
Nov 14 '18 at 23:34





For one thing, this doesn't work, because you have an inner class in Java but a static member class in Kotlin. For a class to be inner in Kotlin, you need to mark it with the inner keyword: inner class DerivedInner ...

– Erwin Bolwidt
Nov 14 '18 at 23:34













@ErwinBolwidt thanks

– Emil Kabirov
Nov 14 '18 at 23:42





@ErwinBolwidt thanks

– Emil Kabirov
Nov 14 '18 at 23:42













You're welcome. I didn't think it would solve it (because the error says it can't resolve the reference which doesn't sound like the problem I mentioned) and I didn't have time to try it. Hence only a comment

– Erwin Bolwidt
Nov 15 '18 at 0:15





You're welcome. I didn't think it would solve it (because the error says it can't resolve the reference which doesn't sound like the problem I mentioned) and I didn't have time to try it. Hence only a comment

– Erwin Bolwidt
Nov 15 '18 at 0:15












1 Answer
1






active

oldest

votes


















1














The equivalent of Java's non-static nested class in Kotlin is inner class.



To make your code work, you need to use inner keyword:



class DerivedOuter() : BaseOuter() 
inner class DerivedInner : BaseOuter.BaseInner()







share|improve this answer






















    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%2f53310263%2fkotlin-inherit-from-a-nested-java-class%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1














    The equivalent of Java's non-static nested class in Kotlin is inner class.



    To make your code work, you need to use inner keyword:



    class DerivedOuter() : BaseOuter() 
    inner class DerivedInner : BaseOuter.BaseInner()







    share|improve this answer



























      1














      The equivalent of Java's non-static nested class in Kotlin is inner class.



      To make your code work, you need to use inner keyword:



      class DerivedOuter() : BaseOuter() 
      inner class DerivedInner : BaseOuter.BaseInner()







      share|improve this answer

























        1












        1








        1







        The equivalent of Java's non-static nested class in Kotlin is inner class.



        To make your code work, you need to use inner keyword:



        class DerivedOuter() : BaseOuter() 
        inner class DerivedInner : BaseOuter.BaseInner()







        share|improve this answer













        The equivalent of Java's non-static nested class in Kotlin is inner class.



        To make your code work, you need to use inner keyword:



        class DerivedOuter() : BaseOuter() 
        inner class DerivedInner : BaseOuter.BaseInner()








        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 14 '18 at 23:41









        syntagmasyntagma

        12.9k1250106




        12.9k1250106





























            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%2f53310263%2fkotlin-inherit-from-a-nested-java-class%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







            這個網誌中的熱門文章

            Barbados

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

            Node.js Script on GitHub Pages or Amazon S3