Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #35603
| From | Eric Sosman <esosman@comcast-dot-net.invalid> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Good pattern for realizing the out-param capability in Java? |
| Date | 2016-09-14 12:55 -0400 |
| Organization | A noiseless patient Spider |
| Message-ID | <nrbvdk$j4p$1@dont-email.me> (permalink) |
| References | <ec81f584-4e19-4f0b-ba29-924ef4e1a570@googlegroups.com> |
On 9/14/2016 12:17 PM, sandeep6699@yahoo.com wrote:
> I want to solicit the opinion of the Java experts about realizing the out-param capability in Java. Suppose there is a method in a class where I would like to realize the following:
>
> class MyClass {
> int myMethod(int inIntParam, int outIntParam, double outDoubleParam) {
> // Accepts inIntParam as input
> // Updates outIntParam and outDoubleParam
> // Returns an int
> …
> }
> …
> }
>
> Since primitive types are passed by values, and primitive type wrapper classes are immutable, I am thinking of having outIntParam and outDoubleParam as instance variables in the class, which get set prior to calling myMethod. Then myMethod can make do with only one parameter i.e.
>
> class MyClass {
> protected int outIntParam;
> protected double outDoubleParam;
>
> int getOutIntParam() {
> return outIntParam;
> }
>
> double getOutDoubleParam() {
> return outDoubleParam;
> }
> //
> // No Settors for these instance variables
> // …
>
> int myMethod(int inIntParam) {
> // Accepts inIntParam as input
> // Updates instance variables in outIntParam and outDoubleParam
> // Returns an int
> …
> }
> …
> }
>
> Kindly suggest if there is a preferred way to realize the same.
You're on the right track: The "out-param" is a reference to a
mutable object, and the method can change the values stored in that
object. You could make the value fields accessible as in your
example, or you could use setXxx() methods for them; the choice is
yours (I'd prefer setXxx() in a "general-purpose" class, but might
use direct field access in a "tightly-bound" class, for example a
private nested class).
One observation, though: There is no need to insist that the
mutable object be an instance of the same class that contains the
method wanting to mutate it. For example, a simple wrapper like
public class MutableInteger {
private int value;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
... could be used as an "out-parameter" in methods of MyClass,
YourClass, SecondClass, HistoryClass, and so on. (If you intend
to use such a thing widely, you might want to add elaborations:
equals() and hashCode(), toString(), maybe extend Number, perhaps
implement Comparable. But for "restricted" uses you might not
need all that extra baggage.)
--
esosman@comcast-dot-net.invalid
The Tooth Fairy has gone high-tech, now pays in Bitecoin.
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Good pattern for realizing the out-param capability in Java? sandeep6699@yahoo.com - 2016-09-14 09:17 -0700
Re: Good pattern for realizing the out-param capability in Java? Robert Klemme <shortcutter@googlemail.com> - 2016-09-14 18:43 +0200
Re: Good pattern for realizing the out-param capability in Java? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-09-14 12:55 -0400
Re: Good pattern for realizing the out-param capability in Java? j4n bur53 <janburse@fastmail.fm> - 2016-09-14 21:00 +0200
Re: Good pattern for realizing the out-param capability in Java? Eric Douglas <e.d.programmer@gmail.com> - 2016-09-14 12:54 -0700
Re: Good pattern for realizing the out-param capability in Java? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-09-14 17:25 -0400
Re: Good pattern for realizing the out-param capability in Java? j4n bur53 <janburse@fastmail.fm> - 2016-09-14 23:45 +0200
Re: Good pattern for realizing the out-param capability in Java? Lew <lewbloch@gmail.com> - 2016-09-14 16:29 -0700
csiph-web