Tuesday, 9 June 2015

Android - 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 :
1
2
3
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class MainActivity extends Activity {
    TextView text1, text2, text3;
    String namaKelas1, namaKelas2, suatuKata;
    KelasContoh kelasContoh;
     
    public void onCreate(Bundle b) {
        super.onCreate(b);<br>                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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="andika.app.MainActivity" >
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="24dp"
        android:text="Large Text" />
    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="48dp"
        android:text="Large Text" />
    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/textView2"
        android:layout_marginTop="48dp"
        android:text="Large Text"
        />
</RelativeLayout>

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.
1
2
3
public void menampilkanKata(String a) {
      text1.setText(a);
}
1
2
public void kegiatan1() {
         MainActivity.this.menampilkanKata("berhasil memakai method MainActivity");<br>}
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 :
1
2
3
namaKelas1 = kelasContoh.kegiatan2(MainActivity.class);<br>namaKelas2 = kelasContoh.kegiatan2(MainActivity.class.getSuperclass());
text2.setText(namaKelas1);
text3.setText(namaKelas2);
Di dalam class KelasContoh :
1
2
3
public String kegiatan2(Class<?> noNameClass) {
    return "Nama kelas : " + noNameClass.getName();
}

Referensi : 
http://docs.oracle.com/javase/specs/jls/se8/jls8.pdf

No comments:

Post a Comment