### Question:
BeanProperty { public Class getValueClass() { return valueClass; } BeanProperty(Class<T> beanClass, String propertyName, boolean readable, boolean writable); Class<T> getBeanClass(); String getPropertyName(); Class getValueClass(); boolean isReadable(); boolean isWritable(); Object get(T member); Object set(T member, Object newValue); @Override boolean equals(Object o); @Override int hashCode();  }### Answer:
@Test public void testResolveGenericReturnType() { final BeanProperty<Bus> busPassengers = new BeanProperty<>(Bus.class, "passenger", true, true); assertSame(People.class, busPassengers.getValueClass()); }
@Test public void testResolveGenericParameterType() { final BeanProperty<Bus> busDriver = new BeanProperty<>(Bus.class, "driver", false, true); assertSame(People.class, busDriver.getValueClass()); }