[Kde-java] QAccel problem

Richard Dale kde-java@kde.org
Wed, 13 Feb 2002 11:26:31 +0000


On Wednesday 13 February 2002 1:20 am, Emond Papegaaij wrote:
> On Monday 11 February 2002 12:15, Richard Dale wrote:
> > On Saturday 09 February 2002 2:39 pm, Emond Papegaaij wrote:
> > > I noticed one more thing: Why does QWMatrix.invert() take an array of
> > > int as argument? The QT version takes a bool.
> >
> > That was a bug in the code generation, a 'bool *' argument type is now
> > converted correctly to a 'boolean[]'. I've fixed the QWMatrix class in
> > the cvs.
>
> Why not use Boolean? You can pass a Boolean object by reference. Yes, but 
Booleans are immutable - there are no set methods to change their values. The 
program below produces the following output, only the value in the boolean[] 
type gets changed:

tipitina duke 1147% java BooleanTest
myarg1: true
myarg1: true
myarg2: true
myarg2: false
myarg3: true
myarg3: true

-- Richard 

public class BooleanTest {

	public static void f1(boolean arg) {
		arg = false;
	}

	public static void f2(boolean[] arg) {
		arg[0] = false;
	}

	public static void f3(Boolean arg) {
		// arg can't be changed, only replaced with a local reference
		arg = Boolean.FALSE;
	}

   public static void main(String[] args) {
	boolean myarg1 = true;
	System.out.println("myarg1: " + (myarg1 ? "true" : "false"));
	f1(myarg1);
	System.out.println("myarg1: " + (myarg1 ? "true" : "false"));

	boolean[] myarg2 = { true };
	myarg2[0] = true;
	System.out.println("myarg2: " + (myarg2[0] ? "true" : "false"));
	f2(myarg2);
	System.out.println("myarg2: " + (myarg2[0] ? "true" : "false"));

	Boolean myarg3 = new Boolean(true);
	System.out.println("myarg3: " + myarg3);
	f3(myarg3);
	System.out.println("myarg3: " + myarg3);

      return;
   }
}