import java.lang.reflect.*;

class Produk {
    private final String nama;
    private final int harga;

    public Produk(String nama, int harga) {
        this.nama = nama;
        this.harga = harga;
    }

    public String getNama() {
        return nama;
    }

    @Override
    public String toString() {
        return nama + " - Rp" + harga;
    }
}

public class PetaRefleksi {
    public static void main(String[] args) throws Exception {
        Class<?> c = Produk.class;

        System.out.println("Field       : " + c.getDeclaredFields().length);
        System.out.println("Method      : " + c.getDeclaredMethods().length);
        System.out.println("Constructor : " + c.getDeclaredConstructors().length);

        Constructor<?> ctor = c.getConstructor(String.class, int.class);
        Object kopi = ctor.newInstance("Kopi Gayo", 85000);

        Method toString = c.getMethod("toString");
        System.out.println("Objek baru  : " + toString.invoke(kopi));
    }
}
