Java - cannot make static reference...

0

Mam taki program:

package pl.java.moj_pakiet;

import java.util.Random;

public class Tab {
	
	public static void main(String[] args) {
		int tab[][] = new int [4][];
		tab[0] = new int [3];
		tab[1] = new int [4];
		tab[2] = new int [5];
		tab[3] = new int [1];
		
		Wprowadz(tab);
	}
	
	public void Wprowadz(int t[][])
	{
			Random rn = new Random();
			
			int i, j;
			int n = t.length;
			for (i = 0; i < n; i++)
			{
				int m = t[i].length;
				for (j = 0; j < m; j++)
					t[i][j] = rn.nextInt();
			}
	}
}

I teraz Eclipse mówi, że nie mogę użyć metody wprowadź, ponieważ:
Cannot make a static reference to the non-static method Wprowadz(int[][]) from the type Tab

Jestem świeży w Javie, uczę się dopiero od kilku dni, w zasadzie to od wczoraj. Czemu wyskakuje taki błąd? Przesiadam się z C++, a tam takich rzeczy nie ma.

0

W C++ i każdym innym języku obiektowym (czy tam zorientowanym, nie pamiętam klasyfikacji) też tak jest, tyle że w GCC komunikat jest łatwiejszy do zrozumienia przez laika: http://ideone.com/DJe47

Rada na przyszłość: staraj się nie tworzyć metod i pól statycznych, a w metodzie GłównaKlasa.main(args) najlepiej wrzuć tylko jedną linijkę: new GłównaKlasa().metodaOdpalającaWszystko(args). Sunowska (teraz już Oraclowa) implementacja Javy ma (a w każdym razie miała) problemy (tzn bugi) związane z kompilowaniem dużej ilości kodu z (głównej, a przez to i statycznej) metody main i bezpośrednio wywoływanych metod statycznych.

0

Jeśli odwołujesz się do nie-statycznej metody to musisz utworzyć obiekt klasy (w tym przypadku klasy Tab) i wywołać metodę w sposób obiekt.metoda() . Możesz również uczynić tę metodę statyczną i wtedy odwołać się do niej poprzez nazwa_klasy.metoda()

1 użytkowników online, w tym zalogowanych: 0, gości: 1