Android - Apa itu .this dan .class Oleh: Andika Kurniawan
Apa itu .this dan .class ?
Di dalam Android terdapat kode-kode yang keliahatan nya 'aneh'. Salah kode yang aneh adalah .this dan .class. Di sini saya akan menjelaskan apa itu .this dan .class. Kita sering melihat .class dan .this ketika kita ingin pindah halaman. Kita sering melihat kode yang seperti ini : Intent i = new Intent(MainActivity.this, SecondView.class); startActivity(i); finish(); Di sini saya akan menjelaskan .this dan .class dengan memberi contoh. Coba run contoh dari .this dan .class yang dibuat di bawah ini : MainActivity.java public class MainActivity extends Activity { TextView text1, text2, text3; String namaKelas1, namaKelas2, suatuKata; KelasContoh kelasContoh; public void onCreate(Bundle b) { super.onCreate(b); setContentView(R.layout.activity_main); text1 = (TextView) findViewById(R.id.textView1); text2 = (TextView) findViewById(R.id.textView2); text3 = (TextView) findViewById(R.id.textView3); kelasContoh = new KelasContoh(); kelasContoh.kegiatan1(); namaKelas1 = kelasContoh.kegiatan2(MainActivity.class); namaKelas2 = kelasContoh.kegiatan2(MainActivity.class.getSuperclass()); text2.setText(namaKelas1); text3.setText(namaKelas2); } public void menampilkanKata(String a) { text1.setText(a); } class KelasContoh {
public void kegiatan1() { MainActivity.this.menampilkanKata("berhasil memakai method MainActivity"); } public String kegiatan2(Class noNameClass) { return "Nama kelas : " + noNameClass.getName(); } public void kegiatan3() { } } } activity_main.xml
android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView2" android:layout_below="@+id/textView2" android:layout_marginTop="48dp" android:text="Large Text" />
Coba run code nya...
1. .this Pengertian .this hampir sama dengan this. Kenapa bisa ada .this ? .this sering digunakan ketika kita membuat inner class. Dari source code yang ada di atas MainActivity.this adalah objek dari class MainActivity lalu memanggil method menampilkanKata yang ada di dalam class MainActivity. public void menampilkanKata(String a) { text1.setText(a); } public void kegiatan1() { MainActivity.this.menampilkanKata("berhasil memakai method MainActivity"); } 2. .class .class artinya objek class dari suatu class. MainActivity.class adalah objek class dari class MainActivity. Jika kita mengeprint nama class nya yang dilakukan pada kegiatan2 maka terbukti bahwa MainActivity.class adalah class MainActivity. Di dalam onCreate : namaKelas1 = kelasContoh.kegiatan2(MainActivity.class); namaKelas2 = kelasContoh.kegiatan2(MainActivity.class.getSuperclass()); text2.setText(namaKelas1); text3.setText(namaKelas2); Di dalam class KelasContoh : public String kegiatan2(Class noNameClass) { return "Nama kelas : " + noNameClass.getName(); }
Referensi : http://docs.oracle.com/javase/specs/jls/se8/jls8.pdf
Tentang Penulis Andika Kurniawan