Java:如何使用Param参数表示类类型,实现按类查询对应建筑数据
解决方案
你可以使用泛型结合Class<T>(Java环境)作为参数类型,既可以接收类作为入参,还能保证返回结果的类型安全,避免手动类型转换的风险。
Java 实现示例
方法定义代码:
// 泛型约束T必须是Building的子类,和你业务中的建筑父类对应即可 public <T extends Building> List<T> findBuildingsType(List<Building> buildingEntities, Class<T> targetClazz) { List<T> matchedBuildings = new ArrayList<>(); for (Building building : buildingEntities) { if (targetClazz.isInstance(building)) { matchedBuildings.add(targetClazz.cast(building)); } } return matchedBuildings; }
调用方式:
// 直接传入Village类的Class对象即可,返回结果自动为List<Village>类型 List<Village> villageList = findBuildingsType(buildingEntities, Village.class);
其他环境说明
- Kotlin 环境下对应参数类型为
KClass<T>,调用时传入Village::class即可 - 该方案为编译期类型安全,比传类名字符串的实现更稳定,能提前捕获类型不匹配的错误

内容的提问来源于stack exchange,提问作者Zhenwei PENG
相关产品推荐
相关产品推荐

