Skip to content

error: constructor in class cannot be applied to given types; with matrix of generic variable in Java

In a first file I declared the Matrix class with corresponding generic variable and with a constructor defined as follows:

public class Matrix<T>{

private T values[][];

void Matrix(T values[][]){
    for (int i = 0; i < values.length; i++) {
        for (int j = 0; j < values[0].length; j++) {
            this.values[i][j] = values[i][j];

And in a second test file class with main program I declare the matrix of generic variables with String elements.

public abstract class TestMatrix {
public static void main(String[] args){
    //Declare matrix
    String[][] array = {{"a","b"},{"c","d"}};
    //Initialize matrix
    Matrix<String> m = new Matrix<String>(array);

Nevertheless I don´t quite understand why I get the error: error: constructor Matrix in class Matrix<T> cannot be applied to given types;
    Matrix<String> m = new Matrix<String>(array);

If I´m using a 2d-dimensional array what´s wrong with the program? I have researched many sites but it´s actually hard to find the exact same example explained here and in the whole internet, therefore I find it quite suitable to post this question here to listen any answer I would gratefully appreciate.


You constuctor is not a constructor because of the void, like here So you just have the invisible constructor without arguments.

You don´t need to copy the arrays with the for loops you can just use build in stuff like Arrays.copyOf(array, newLength);