Kotlin: inherit from a nested Java class
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
add a comment |
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
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 theinner
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
add a comment |
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
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
java inheritance kotlin nested
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 theinner
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
add a comment |
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 theinner
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
add a comment |
1 Answer
1
active
oldest
votes
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()
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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()
add a comment |
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()
add a comment |
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()
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()
answered Nov 14 '18 at 23:41
syntagmasyntagma
13.1k1250108
13.1k1250108
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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