how to get class name from an interface with multiple implementations in java












1














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.










share|improve this question




















  • 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 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










  • @brainstorm debug the contents of dummy.getClass()
    – Andrew Tobilko
    Nov 12 at 21:07
















1














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.










share|improve this question




















  • 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 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










  • @brainstorm debug the contents of dummy.getClass()
    – Andrew Tobilko
    Nov 12 at 21:07














1












1








1


1





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.










share|improve this question















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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 (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










  • @brainstorm debug the contents of dummy.getClass()
    – Andrew Tobilko
    Nov 12 at 21:07














  • 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 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










  • @brainstorm debug the contents of dummy.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

















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
});


}
});














draft saved

draft discarded


















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
















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.





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.




draft saved


draft discarded














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





















































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

Bressuire

Vorschmack

Quarantine