Statyczne klasy w Javie

0

Witam,
Mam pewną klasę wewnętrzną w kodzie Androidowym:

	private static class DatabaseHelper extends SQLiteOpenHelper {
		public DatabaseHelper(Context context, String name, CursorFactory factory, int version) {
			super(context, name, factory, version);
		}
		
		@Override
		public void onCreate(SQLiteDatabase db) {
			db.execSQL(DB_CREATE_TODO_TABLE);
			
			Log.d(DEBUG_TAG, "Database creating..");
			Log.d(DEBUG_TAG, "Table " + DB_TODO_TABLE + " ver." + DB_VERSION + " created");
		}
		
		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
			db.execSQL(DROP_TODO_TABLE);
			
			Log.d(DEBUG_TAG, "Database updating...");
			Log.d(DEBUG_TAG, "Table " + DB_TODO_TABLE + " updated from ver." + oldVersion + " to ver." + newVersion);
			Log.d(DEBUG_TAG, "All data is lost");
			
			onCreate(db);
		}
	}

Klasa ta jest statyczna i wewnętrzna.

Pytanie:
Po co tworzyć klasy statyczne? Czy zabraniamy w ten sposób tworzenia obiektów tej klasy, wszystkie metody tej klasy automatycznie stają się statyczne i mogą być wywoływane niezależnie od obiektu (bo nie działają na obiekcie, łączy je tylko wspólna przestrzeń nazw)?

0

Nie ;] Statyczność tej klasy pozwala ci korzystać z niej bez obiektu klasy w której twoja klasa jest zagnieżdżona. Gdyby nie była statyczna to nie byłoby to możliwe.

0

W normalnych okolicznościach po prostu utworzyłbym do tego niezależną klasę i miałbym to samo. Po co więc tworzyć klasę wewnętrzną?

W klasie, w której znajduje się statyczna mam następującą zmienną, z której korzysta klasa statyczna:

	private SQLiteDatabase db; // to zmienna, z ktorej korzysta klasa statyczna
	private Context context;
	private DatabaseHelper dbHelper; // to jest egzemplarz klasy statycznej

Czyli użycie statica pozwala mi na dostanie się do tej zmiennej db (pewnie w innym miejscu programu tez jest to potrzebne, inaczej bez sensu byloby tworzyc klase statyczna).

Dzieki.

0

Nie nie nie. Nic nie zrozumiałeś ;] Lektura na dziś:
http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

Powtórzę jeszcze raz: statyczność klasy zagnieżdżonej pozwala odnosić się do tej klasy bez konieczności posiadania obiektu klasy zagnieżdżającej.

0

OK, chyba do mnie dotarło, postaram się to wykorzystywać w moich programach to nabiorę intuicji.

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