• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

figuring out how to display special error message

 
Ranch Hand
Posts: 416
  • Number of slices to send:
    Optional 'thank-you' note:
Right now I've a class- MessageReturn like this and this class is used for an error message like this:



I want to have something like private String specialErrorMsg; in the MessageReturn class and then use it like this from some other class.



But the constructor will always take errorMsg as that's what the constructor is doing. I can't define another constructor like this



So I'm wondering how can I use specialErrorMsg variable for the message?

 
Marshal
Posts: 28258
95
  • Number of slices to send:
    Optional 'thank-you' note:
So now you're going to have "private String specialErrorMessage" in there as well as the other three types of message?

I'd suggest stop making "errorMessage" be handled differently than the other message types. Have only one constructor which takes no parameters and have all of the data fields set by "setXXXMessage" methods.

You could also have the "setXXXMessage" methods return "this" instead of void, so you could chain them together:
Then you could write
 
Jack Tauson
Ranch Hand
Posts: 416
  • Number of slices to send:
    Optional 'thank-you' note:

Paul Clapham wrote:So now you're going to have "private String specialErrorMessage" in there as well as the other three types of message?

I'd suggest stop making "errorMessage" be handled differently than the other message types. Have only one constructor which takes no parameters and have all of the data fields set by "setXXXMessage" methods.

You could also have the "setXXXMessage" methods return "this" instead of void, so you could chain them together:
Then you could write




Just to clarify, you are suggesting to replace the following method:



with the following, right?



And I would still define private String specialErrorMessage and using it's setter method, I could do the following:




Please let me know if I misunderstood anything here. Thanks
 
Paul Clapham
Marshal
Posts: 28258
95
  • Number of slices to send:
    Optional 'thank-you' note:
Yes, that sounds right. Give it a try and see what goes wrong.
 
Bartender
Posts: 280
12
  • Number of slices to send:
    Optional 'thank-you' note:
Side comment.. if you can only have one message be returned at a time, you could be more concise with a single message field and a flag indicating what type it is.

 
Sheriff
Posts: 17652
300
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
I concur with Lou's suggested approach, but without the setter for message type. Do it all in the constructor and make the class immutable.

Also, consider renaming the class to simply Message: I don't see any reason to name it "MessageReturn" - you're probably thinking "It's a massage that I return, so 'MessageReturn'". No. It's a message plain and simple. The fact that you return it from a method is irrelevant to the name choice.
 
Marshal
Posts: 79394
377
  • Number of slices to send:
    Optional 'thank-you' note:

Junilu Lacar wrote:. . . Do it all in the constructor and make the class immutable. . . .

Junilu is right; make the class and both its fields final, so it will be immutable. That way there will be no risk of users forgetting to set the message. You don't want people to use your Message object and have a method return null.
 
Jack Tauson
Ranch Hand
Posts: 416
  • Number of slices to send:
    Optional 'thank-you' note:

Junilu Lacar wrote:I concur with Lou's suggested approach, but without the setter for message type. Do it all in the constructor and make the class immutable.

Also, consider renaming the class to simply Message: I don't see any reason to name it "MessageReturn" - you're probably thinking "It's a massage that I return, so 'MessageReturn'". No. It's a message plain and simple. The fact that you return it from a method is irrelevant to the name choice.



Could you tell me your constructor approach by pasting a few lines of code? Thanks!
 
Junilu Lacar
Sheriff
Posts: 17652
300
  • Number of slices to send:
    Optional 'thank-you' note:
 
Paul Clapham
Marshal
Posts: 28258
95
  • Number of slices to send:
    Optional 'thank-you' note:
That is much nicer than the original code, but it assumes that all of the peculiar complexity of the original code is unnecessary. Which may in fact be true, but I didn't want to assume that.
 
Campbell Ritchie
Marshal
Posts: 79394
377
  • Number of slices to send:
    Optional 'thank-you' note:
Surely you would want the class to be final, Junilu?
 
Lou Hamers
Bartender
Posts: 280
12
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
Yeah going immutable is a good suggestion. In fact if we're going for immutable on a recent version of Java:


Get rid of the getters too!!!

How about that for "concise"?    Even the millennials should like that one (I think).
 
Campbell Ritchie
Marshal
Posts: 79394
377
  • Number of slices to send:
    Optional 'thank-you' note:
I'd forgotten about records.

Lou Hamers wrote:. . . Get rid of the getters too!!!  . . .

But a record always has getters; they are simply named differently.
 
Lou Hamers
Bartender
Posts: 280
12
  • Number of slices to send:
    Optional 'thank-you' note:
True, I just meant the code itself, not the implicit getters.
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
reply
    Bookmark Topic Watch Topic
  • New Topic
vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |