ClassToInstanceMap example

Setup

class Person {
    private String name;

    public Person(String name) {
        super();
        this.name = name;
    }

    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return Objects.toStringHelper(this)
                .add("name", name)
                .toString();
    }
}

class Jobs {
    private String jobName;

    public Jobs(String jobName) {
        super();
        this.jobName = jobName;
    }

    public String getJobName() {
        return jobName;
    }

    @Override
    public String toString() {
        return Objects.toStringHelper(this)
                .add("jobName", jobName)
                .toString();
    }
}

class Address {
    private String streetName;

    public Address(String streetName) {
        super();
        this.streetName = streetName;
    }

    public String getStreetName() {
        return streetName;
    }

    @Override
    public String toString() {
        return Objects.toStringHelper(this)
                .add("streetName", streetName)
                .toString();
    }
}

ClassToInstanceMap

@Test
public void classToINstanceMap_example () {

    Person person = new Person("Jackson");
    Jobs jobs = new Jobs("IT person");
    Address address = new  Address("505 Williams Street");

    ClassToInstanceMap<Object> classToInstanceMap = MutableClassToInstanceMap.create();
    classToInstanceMap.put(Person.class, person);
    classToInstanceMap.put(Jobs.class, jobs);
    classToInstanceMap.put(Address.class, address);

    logger.info(classToInstanceMap);

    assertEquals("IT person", classToInstanceMap.getInstance(Jobs.class).getJobName());
}

Output

{
    class com.levelup.java.guava.ClassToInstanceMapExample$Jobs=Jobs{jobName=IT person},
    class com.levelup.java.guava.ClassToInstanceMapExample$Person=Person{name=Jackson},
    class com.levelup.java.guava.ClassToInstanceMapExample$Address=Address{streetName=505 Williams Street}
}