support java generic