public class TigaCaraClass {
    public static void main(String[] args) throws Exception {
        // Cara 1: class literal — tipe sudah diketahui saat menulis kode
        Class<String> lewatLiteral = String.class;

        // Cara 2: getClass() — dari objek yang sudah ada saat runtime
        Class<?> lewatObjek = "Halo, Budi".getClass();

        // Cara 3: Class.forName — dari string nama class ber-package
        Class<?> lewatNama = Class.forName("java.lang.String");

        System.out.println("literal == objek : " + (lewatLiteral == lewatObjek));
        System.out.println("objek  == nama   : " + (lewatObjek == lewatNama));

        Class<?> sendiri = Class.forName("TigaCaraClass");
        System.out.println("Class sendiri    : " + sendiri.getName());
        System.out.println("Class primitif   : " + int.class.getName());
        System.out.println("Class array      : " + int[].class.getName());
    }
}
