Return Type in F-Bounded Polymorphism Java The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) The Ask Question Wizard is Live! Data science time! April 2019 and salary with experienceIs Java “pass-by-reference” or “pass-by-value”?How do I efficiently iterate over each entry in a Java Map?Should we @Override an interface's method implementation?What is the difference between public, protected, package-private and private in Java?How do I read / convert an InputStream into a String in Java?When to use LinkedList over ArrayList in Java?How do I generate random integers within a specific range in Java?How do I convert a String to an int in Java?Creating a memory leak with JavaHow should I have explained the difference between an Interface and an Abstract class?
Do working physicists consider Newtonian mechanics to be "falsified"?
A pet rabbit called Belle
Sort list of array linked objects by keys and values
ELI5: Why do they say that Israel would have been the fourth country to land a spacecraft on the Moon and why do they call it low cost?
Hopping to infinity along a string of digits
Make it rain characters
How can I protect witches in combat who wear limited clothing?
How to grep and cut numbers from a file and sum them
Am I ethically obligated to go into work on an off day if the reason is sudden?
Arduino Pro Micro - switch off LEDs
Is this wall load bearing? Blueprints and photos attached
Can undead you have reanimated wait inside a portable hole?
Would it be possible to rearrange a dragon's flight muscle to somewhat circumvent the square-cube law?
Are spiders unable to hurt humans, especially very small spiders?
How to pronounce 1ターン?
Can a 1st-level character have an ability score above 18?
What are these Gizmos at Izaña Atmospheric Research Center in Spain?
How did passengers keep warm on sail ships?
Why does the Event Horizon Telescope (EHT) not include telescopes from Africa, Asia or Australia?
How are presidential pardons supposed to be used?
Install many applications using one command
Is above average number of years spent on PhD considered a red flag in future academia or industry positions?
how can a perfect fourth interval be considered either consonant or dissonant?
Didn't get enough time to take a Coding Test - what to do now?
Return Type in F-Bounded Polymorphism Java
The 2019 Stack Overflow Developer Survey Results Are In
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
The Ask Question Wizard is Live!
Data science time! April 2019 and salary with experienceIs Java “pass-by-reference” or “pass-by-value”?How do I efficiently iterate over each entry in a Java Map?Should we @Override an interface's method implementation?What is the difference between public, protected, package-private and private in Java?How do I read / convert an InputStream into a String in Java?When to use LinkedList over ArrayList in Java?How do I generate random integers within a specific range in Java?How do I convert a String to an int in Java?Creating a memory leak with JavaHow should I have explained the difference between an Interface and an Abstract class?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I have an interface:
public interface Message<T extends Message<T>>
I have a class that implements this method as
public class FulfilmentReleasedDomModel implements Message<FulfilmentReleasedDomModel>
And I have this method:
private <T extends Message<T>> Mono<T> getDomainModel(ConsumerRecord<String, String> record)
When I try to return an object of type Mono<FulfilmentReleaseDomModel>
from this method, the compiler throws an error and asks me to cast it to (Mono<T>
).
My question is, since I have bounded T
to extends Message
, and FulfilmentReleasedDomModel
implements Message<FulfilmentReleasedDomModel>
, why do I need to cast it to Mono<T>
?
java type-conversion type-erasure
add a comment |
I have an interface:
public interface Message<T extends Message<T>>
I have a class that implements this method as
public class FulfilmentReleasedDomModel implements Message<FulfilmentReleasedDomModel>
And I have this method:
private <T extends Message<T>> Mono<T> getDomainModel(ConsumerRecord<String, String> record)
When I try to return an object of type Mono<FulfilmentReleaseDomModel>
from this method, the compiler throws an error and asks me to cast it to (Mono<T>
).
My question is, since I have bounded T
to extends Message
, and FulfilmentReleasedDomModel
implements Message<FulfilmentReleasedDomModel>
, why do I need to cast it to Mono<T>
?
java type-conversion type-erasure
add a comment |
I have an interface:
public interface Message<T extends Message<T>>
I have a class that implements this method as
public class FulfilmentReleasedDomModel implements Message<FulfilmentReleasedDomModel>
And I have this method:
private <T extends Message<T>> Mono<T> getDomainModel(ConsumerRecord<String, String> record)
When I try to return an object of type Mono<FulfilmentReleaseDomModel>
from this method, the compiler throws an error and asks me to cast it to (Mono<T>
).
My question is, since I have bounded T
to extends Message
, and FulfilmentReleasedDomModel
implements Message<FulfilmentReleasedDomModel>
, why do I need to cast it to Mono<T>
?
java type-conversion type-erasure
I have an interface:
public interface Message<T extends Message<T>>
I have a class that implements this method as
public class FulfilmentReleasedDomModel implements Message<FulfilmentReleasedDomModel>
And I have this method:
private <T extends Message<T>> Mono<T> getDomainModel(ConsumerRecord<String, String> record)
When I try to return an object of type Mono<FulfilmentReleaseDomModel>
from this method, the compiler throws an error and asks me to cast it to (Mono<T>
).
My question is, since I have bounded T
to extends Message
, and FulfilmentReleasedDomModel
implements Message<FulfilmentReleasedDomModel>
, why do I need to cast it to Mono<T>
?
java type-conversion type-erasure
java type-conversion type-erasure
asked Mar 22 at 6:34
Prashant PandeyPrashant Pandey
457316
457316
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
A common misconception about generics is that the callee decides what the generic type is. No, the caller does.
You, as the writer of the method, don't get to decide what T
is. By returning Mono<FulfilmentReleasedDomModel>
, you are saying that T
must be FulfilmentReleasedDomModel
. But in actuality, the caller of your method will decide what T
is. They could declare a type called Foo
that implements Message<Foo>
and say that T
is Foo
. You would need to return a Mono<Foo>
instead.
It seems like your method should not be generic, because the callee is deciding what type to use:
private Mono<FulfilmentReleasedDomModel> getDomainModel(ConsumerRecord<String, String> record)
Alternatively, if you want to make this method more flexible, so that you can change its implementation to return something else without changing its return type, you can use generic wildcards:
private Mono<? extends Message> getDomainModel(ConsumerRecord<String, String> record)
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%2f55294100%2freturn-type-in-f-bounded-polymorphism-java%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
A common misconception about generics is that the callee decides what the generic type is. No, the caller does.
You, as the writer of the method, don't get to decide what T
is. By returning Mono<FulfilmentReleasedDomModel>
, you are saying that T
must be FulfilmentReleasedDomModel
. But in actuality, the caller of your method will decide what T
is. They could declare a type called Foo
that implements Message<Foo>
and say that T
is Foo
. You would need to return a Mono<Foo>
instead.
It seems like your method should not be generic, because the callee is deciding what type to use:
private Mono<FulfilmentReleasedDomModel> getDomainModel(ConsumerRecord<String, String> record)
Alternatively, if you want to make this method more flexible, so that you can change its implementation to return something else without changing its return type, you can use generic wildcards:
private Mono<? extends Message> getDomainModel(ConsumerRecord<String, String> record)
add a comment |
A common misconception about generics is that the callee decides what the generic type is. No, the caller does.
You, as the writer of the method, don't get to decide what T
is. By returning Mono<FulfilmentReleasedDomModel>
, you are saying that T
must be FulfilmentReleasedDomModel
. But in actuality, the caller of your method will decide what T
is. They could declare a type called Foo
that implements Message<Foo>
and say that T
is Foo
. You would need to return a Mono<Foo>
instead.
It seems like your method should not be generic, because the callee is deciding what type to use:
private Mono<FulfilmentReleasedDomModel> getDomainModel(ConsumerRecord<String, String> record)
Alternatively, if you want to make this method more flexible, so that you can change its implementation to return something else without changing its return type, you can use generic wildcards:
private Mono<? extends Message> getDomainModel(ConsumerRecord<String, String> record)
add a comment |
A common misconception about generics is that the callee decides what the generic type is. No, the caller does.
You, as the writer of the method, don't get to decide what T
is. By returning Mono<FulfilmentReleasedDomModel>
, you are saying that T
must be FulfilmentReleasedDomModel
. But in actuality, the caller of your method will decide what T
is. They could declare a type called Foo
that implements Message<Foo>
and say that T
is Foo
. You would need to return a Mono<Foo>
instead.
It seems like your method should not be generic, because the callee is deciding what type to use:
private Mono<FulfilmentReleasedDomModel> getDomainModel(ConsumerRecord<String, String> record)
Alternatively, if you want to make this method more flexible, so that you can change its implementation to return something else without changing its return type, you can use generic wildcards:
private Mono<? extends Message> getDomainModel(ConsumerRecord<String, String> record)
A common misconception about generics is that the callee decides what the generic type is. No, the caller does.
You, as the writer of the method, don't get to decide what T
is. By returning Mono<FulfilmentReleasedDomModel>
, you are saying that T
must be FulfilmentReleasedDomModel
. But in actuality, the caller of your method will decide what T
is. They could declare a type called Foo
that implements Message<Foo>
and say that T
is Foo
. You would need to return a Mono<Foo>
instead.
It seems like your method should not be generic, because the callee is deciding what type to use:
private Mono<FulfilmentReleasedDomModel> getDomainModel(ConsumerRecord<String, String> record)
Alternatively, if you want to make this method more flexible, so that you can change its implementation to return something else without changing its return type, you can use generic wildcards:
private Mono<? extends Message> getDomainModel(ConsumerRecord<String, String> record)
answered Mar 22 at 6:55
SweeperSweeper
72.8k1075144
72.8k1075144
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%2f55294100%2freturn-type-in-f-bounded-polymorphism-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