Parametertypen werden nicht richtig geparst #202

Open
opened 2018-09-13 12:06:20 +00:00 by pl · 2 comments
Owner

branch: bytecode2
commit: acc7d95060

Der Argument-Typ Vector<Vector von mul (s.u.) Test.Bytecode.javaFile.Matrix.jav wird nicht richtig geparst

import java.util.Vector;
import java.lang.Integer;
//import java.lang.Byte;
import java.lang.Boolean;

public class Matrix extends Vector<Vector> {

Matrix () {
}

Matrix(vv) {
	Integer i;
	i = 0;
  while(i < vv.size()) {

// Boolean a = this.add(vv.elementAt(i));
this.add(vv.elementAt(i));
i=i+1;
}
}

mul(Vector<Vector<Integer>   m) {
    var ret = new Matrix();
    var i = 0;
    while(i < size()) {
        var v1 = this.elementAt(i);
        var v2 = new Vector<Integer>();
        var j = 0;
        while(j < v1.size()) {
            var erg = 0;
            var k = 0;
            while(k < v1.size()) {
                erg = erg + v1.elementAt(k)
                         * m.elementAt(k).elementAt(j);
                k++; }

// v2.addElement(new Integer(erg));
v2.addElement(erg);
j++; }
ret.addElement(v2);
i++;
}
return ret;
}
}

branch: bytecode2 commit: acc7d95060150e4ae2f3b23ab80207b6efc34d99 Der Argument-Typ Vector<Vector<Integer> von mul (s.u.) Test.Bytecode.javaFile.Matrix.jav wird nicht richtig geparst import java.util.Vector; import java.lang.Integer; //import java.lang.Byte; import java.lang.Boolean; public class Matrix extends Vector<Vector<Integer>> { Matrix () { } Matrix(vv) { Integer i; i = 0; while(i < vv.size()) { // Boolean a = this.add(vv.elementAt(i)); this.add(vv.elementAt(i)); i=i+1; } } mul(Vector<Vector<Integer> m) { var ret = new Matrix(); var i = 0; while(i < size()) { var v1 = this.elementAt(i); var v2 = new Vector<Integer>(); var j = 0; while(j < v1.size()) { var erg = 0; var k = 0; while(k < v1.size()) { erg = erg + v1.elementAt(k) * m.elementAt(k).elementAt(j); k++; } // v2.addElement(new Integer(erg)); v2.addElement(erg); j++; } ret.addElement(v2); i++; } return ret; } }
Owner

Da fehlt eine schließende eckige Klammer im Typ:
Vector<Vector

Es muss heißen

import java.util.Vector;
import java.lang.Integer;
//import java.lang.Byte;
import java.lang.Boolean;

public class Matrix extends Vector<Vector> {

Matrix () {
}

Matrix(vv) {
	Integer i;
	i = 0;
  while(i < vv.size()) {

// Boolean a = this.add(vv.elementAt(i));
this.add(vv.elementAt(i));
i=i+1;
}
}

mul(Vector<Vector<Integer>>   m) {
    var ret = new Matrix();
    var i = 0;
    while(i < size()) {
        var v1 = this.elementAt(i);
        var v2 = new Vector<Integer>();
        var j = 0;
        while(j < v1.size()) {
            var erg = 0;
            var k = 0;
            while(k < v1.size()) {
                erg = erg + v1.elementAt(k)
                         * m.elementAt(k).elementAt(j);
                k++; }

// v2.addElement(new Integer(erg));
v2.addElement(erg);
j++; }
ret.addElement(v2);
i++;
}
return ret;
}
}

Da fehlt eine schließende eckige Klammer im Typ: Vector<Vector<Integer> Es muss heißen import java.util.Vector; import java.lang.Integer; //import java.lang.Byte; import java.lang.Boolean; public class Matrix extends Vector<Vector<Integer>> { Matrix () { } Matrix(vv) { Integer i; i = 0; while(i < vv.size()) { // Boolean a = this.add(vv.elementAt(i)); this.add(vv.elementAt(i)); i=i+1; } } mul(Vector<Vector<Integer>> m) { var ret = new Matrix(); var i = 0; while(i < size()) { var v1 = this.elementAt(i); var v2 = new Vector<Integer>(); var j = 0; while(j < v1.size()) { var erg = 0; var k = 0; while(k < v1.size()) { erg = erg + v1.elementAt(k) * m.elementAt(k).elementAt(j); k++; } // v2.addElement(new Integer(erg)); v2.addElement(erg); j++; } ret.addElement(v2); i++; } return ret; } }
Author
Owner

Es funktioniert, wenn man die Argumenttypen unqualifiziert

Matrix mul(Vector<Vector> m) { ...

angeben sind. Wenn man Sie aber qualifiziert angibt

Matrix mul(java.util.Vector<java.util.Vector<java.lang.Integer>> m) {...

steht im Sourcefile als Typ für m: Vector

d.h. der Parameter wird als Typeplaceholder angegeben.


import java.util.Vector;
import java.lang.Integer;
//import java.lang.Byte;
import java.lang.Boolean;

public class Matrix extends Vector<Vector> {

Matrix () {
}

Matrix(vv) {
	Integer i;
	i = 0;
  while(i < vv.size()) {

// Boolean a = this.add(vv.elementAt(i));
this.add(vv.elementAt(i));
i=i+1;
}
}

Matrix mul(java.util.Vector<java.util.Vector<java.lang.Integer>> m) {
    var ret = new Matrix();
    var i = 0;
    while(i < size()) {
        var v1 = this.elementAt(i);
        var v2 = new Vector<Integer>();
        var j = 0;
        while(j < v1.size()) {
            var erg = 0;
            var k = 0;
            while(k < v1.size()) {
                erg = erg + v1.elementAt(k)
                         * m.elementAt(k).elementAt(j);
                k++; }

// v2.addElement(new Integer(erg));
v2.addElement(erg);
j++; }
ret.addElement(v2);
i++;
}
return ret;
}
}

Es funktioniert, wenn man die Argumenttypen unqualifiziert Matrix mul(Vector<Vector<Integer>> m) { ... angeben sind. Wenn man Sie aber qualifiziert angibt Matrix mul(java.util.Vector<java.util.Vector<java.lang.Integer>> m) {... steht im Sourcefile als Typ für m: Vector<TPH T> d.h. der Parameter wird als Typeplaceholder angegeben. ------------------------------------------------------------------------ import java.util.Vector; import java.lang.Integer; //import java.lang.Byte; import java.lang.Boolean; public class Matrix extends Vector<Vector<Integer>> { Matrix () { } Matrix(vv) { Integer i; i = 0; while(i < vv.size()) { // Boolean a = this.add(vv.elementAt(i)); this.add(vv.elementAt(i)); i=i+1; } } Matrix mul(java.util.Vector<java.util.Vector<java.lang.Integer>> m) { var ret = new Matrix(); var i = 0; while(i < size()) { var v1 = this.elementAt(i); var v2 = new Vector<Integer>(); var j = 0; while(j < v1.size()) { var erg = 0; var k = 0; while(k < v1.size()) { erg = erg + v1.elementAt(k) * m.elementAt(k).elementAt(j); k++; } // v2.addElement(new Integer(erg)); v2.addElement(erg); j++; } ret.addElement(v2); i++; } return ret; } }
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: JavaTX/JavaCompilerCore#202
No description provided.