how to get class name from an interface with multiple implementations in java
I have the following interface
Interface fooBar extends Foo {}
few classes implementing them
class A implements fooBar {}
class B implements fooBar {}
class C implements fooBar {}
Now in one of the methods I have the following
Foo dummy = someMethod.getIt();
I want to know what type dummy is; is it A, B, C
I tried dummy.getClass().getSimpleName()
and that it did not give any of the three but a random string "AndFunction"
I can do instanceOf
check for each of A, B, C. That becomes ugly when I have more implementations.
P.S. I have simplified some code which I am trying to debug using debugger in IntelliJ. This is pretty big legacy app with spring beans created and injected during runtime.
java
add a comment |
I have the following interface
Interface fooBar extends Foo {}
few classes implementing them
class A implements fooBar {}
class B implements fooBar {}
class C implements fooBar {}
Now in one of the methods I have the following
Foo dummy = someMethod.getIt();
I want to know what type dummy is; is it A, B, C
I tried dummy.getClass().getSimpleName()
and that it did not give any of the three but a random string "AndFunction"
I can do instanceOf
check for each of A, B, C. That becomes ugly when I have more implementations.
P.S. I have simplified some code which I am trying to debug using debugger in IntelliJ. This is pretty big legacy app with spring beans created and injected during runtime.
java
3
"it did not give any of the three" - What did it give you?
– Jacob G.
Nov 12 at 18:42
2
Instead of instanceof, you should use polymorphism, however, this is hard if you can't refactor the code.
– Peter Lawrey
Nov 12 at 18:42
1
That name might have been auto-generated (ifsomeMethod.getIt()
returned a proxy). You can examine the interfaces and/or the superclass ofdummy.getClass()
to figure out what it really is.
– Andrew Tobilko
Nov 12 at 19:01
@AndrewTobilko how?
– brain storm
Nov 12 at 19:19
@brainstorm debug the contents ofdummy.getClass()
– Andrew Tobilko
Nov 12 at 21:07
add a comment |
I have the following interface
Interface fooBar extends Foo {}
few classes implementing them
class A implements fooBar {}
class B implements fooBar {}
class C implements fooBar {}
Now in one of the methods I have the following
Foo dummy = someMethod.getIt();
I want to know what type dummy is; is it A, B, C
I tried dummy.getClass().getSimpleName()
and that it did not give any of the three but a random string "AndFunction"
I can do instanceOf
check for each of A, B, C. That becomes ugly when I have more implementations.
P.S. I have simplified some code which I am trying to debug using debugger in IntelliJ. This is pretty big legacy app with spring beans created and injected during runtime.
java
I have the following interface
Interface fooBar extends Foo {}
few classes implementing them
class A implements fooBar {}
class B implements fooBar {}
class C implements fooBar {}
Now in one of the methods I have the following
Foo dummy = someMethod.getIt();
I want to know what type dummy is; is it A, B, C
I tried dummy.getClass().getSimpleName()
and that it did not give any of the three but a random string "AndFunction"
I can do instanceOf
check for each of A, B, C. That becomes ugly when I have more implementations.
P.S. I have simplified some code which I am trying to debug using debugger in IntelliJ. This is pretty big legacy app with spring beans created and injected during runtime.
java
java
edited Nov 12 at 18:49
asked Nov 12 at 18:38
brain storm
10.1k32138259
10.1k32138259
3
"it did not give any of the three" - What did it give you?
– Jacob G.
Nov 12 at 18:42
2
Instead of instanceof, you should use polymorphism, however, this is hard if you can't refactor the code.
– Peter Lawrey
Nov 12 at 18:42
1
That name might have been auto-generated (ifsomeMethod.getIt()
returned a proxy). You can examine the interfaces and/or the superclass ofdummy.getClass()
to figure out what it really is.
– Andrew Tobilko
Nov 12 at 19:01
@AndrewTobilko how?
– brain storm
Nov 12 at 19:19
@brainstorm debug the contents ofdummy.getClass()
– Andrew Tobilko
Nov 12 at 21:07
add a comment |
3
"it did not give any of the three" - What did it give you?
– Jacob G.
Nov 12 at 18:42
2
Instead of instanceof, you should use polymorphism, however, this is hard if you can't refactor the code.
– Peter Lawrey
Nov 12 at 18:42
1
That name might have been auto-generated (ifsomeMethod.getIt()
returned a proxy). You can examine the interfaces and/or the superclass ofdummy.getClass()
to figure out what it really is.
– Andrew Tobilko
Nov 12 at 19:01
@AndrewTobilko how?
– brain storm
Nov 12 at 19:19
@brainstorm debug the contents ofdummy.getClass()
– Andrew Tobilko
Nov 12 at 21:07
3
3
"it did not give any of the three" - What did it give you?
– Jacob G.
Nov 12 at 18:42
"it did not give any of the three" - What did it give you?
– Jacob G.
Nov 12 at 18:42
2
2
Instead of instanceof, you should use polymorphism, however, this is hard if you can't refactor the code.
– Peter Lawrey
Nov 12 at 18:42
Instead of instanceof, you should use polymorphism, however, this is hard if you can't refactor the code.
– Peter Lawrey
Nov 12 at 18:42
1
1
That name might have been auto-generated (if
someMethod.getIt()
returned a proxy). You can examine the interfaces and/or the superclass of dummy.getClass()
to figure out what it really is.– Andrew Tobilko
Nov 12 at 19:01
That name might have been auto-generated (if
someMethod.getIt()
returned a proxy). You can examine the interfaces and/or the superclass of dummy.getClass()
to figure out what it really is.– Andrew Tobilko
Nov 12 at 19:01
@AndrewTobilko how?
– brain storm
Nov 12 at 19:19
@AndrewTobilko how?
– brain storm
Nov 12 at 19:19
@brainstorm debug the contents of
dummy.getClass()
– Andrew Tobilko
Nov 12 at 21:07
@brainstorm debug the contents of
dummy.getClass()
– Andrew Tobilko
Nov 12 at 21:07
add a comment |
active
oldest
votes
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%2f53268184%2fhow-to-get-class-name-from-an-interface-with-multiple-implementations-in-java%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f53268184%2fhow-to-get-class-name-from-an-interface-with-multiple-implementations-in-java%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
3
"it did not give any of the three" - What did it give you?
– Jacob G.
Nov 12 at 18:42
2
Instead of instanceof, you should use polymorphism, however, this is hard if you can't refactor the code.
– Peter Lawrey
Nov 12 at 18:42
1
That name might have been auto-generated (if
someMethod.getIt()
returned a proxy). You can examine the interfaces and/or the superclass ofdummy.getClass()
to figure out what it really is.– Andrew Tobilko
Nov 12 at 19:01
@AndrewTobilko how?
– brain storm
Nov 12 at 19:19
@brainstorm debug the contents of
dummy.getClass()
– Andrew Tobilko
Nov 12 at 21:07