import java.lang.reflect.Constructor;
import java.util.Arrays;

class Pemesan {
    private final String nama;
    private final String kota;

    public Pemesan(String nama) {
        this(nama, "Jakarta");
    }

    public Pemesan(String nama, String kota) {
        this.nama = nama;
        this.kota = kota;
    }

    @Override
    public String toString() {
        return nama + " di " + kota;
    }
}

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

        Constructor<?>[] semua = c.getConstructors();
        Arrays.sort(semua, java.util.Comparator.comparing(Constructor::toString));
        System.out.println("Constructor publik Pemesan:");
        for (Constructor<?> k : semua) {
            System.out.println("  parameter: " + k.getParameterCount());
        }

        Constructor<?> duaArg = c.getConstructor(String.class, String.class);
        Object budi = duaArg.newInstance("Budi", "Bandung");
        System.out.println("objek baru : " + budi);

        Constructor<?> satuArg = c.getConstructor(String.class);
        Object siti = satuArg.newInstance("Siti");
        System.out.println("objek baru : " + siti);
    }
}
