Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #35603

Re: Good pattern for realizing the out-param capability in Java?

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>

Show all headers | View raw


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


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