java - 避免在不定义类的情况下实例化泛型
问题描述
我定义了这个类
@Data
@AllArgsConstructor
@EqualsAndHashCode(of = { "id" })
@Builder(toBuilder=true)
@Wither
@JsonInclude(NON_NULL)
public class Hostel<T> {
}
我想知道是否可以在不定义这样的类的情况下避免实例化
new Hostel<>();
并始终强制实例化,例如:
new Hostel<GuestAndHouse>();
解决方案
您不能禁止这种语法变体。例如这个
Hostel<GuestAndHouse> h = new Hostel<>();
只是一个简化的语法:
Hostel<GuestAndHouse> h = new Hostel<GuestAndHouse>();
但这是同一回事。类型变量T
仍然在这里定义。编译器可以从上下文推断类型,所以你不需要写下来。
它不是像这样的原始类型:
Hostel h = new Hostel();
这里的类型变量没有被赋予一个真正的类型。这应该避免,但 Java 编译器允许它向后兼容在泛型出现在 java 中之前编写的代码(泛型已在 1.5 中引入)。
推荐阅读
- c++ - CComPtr 分配是线程安全的吗?
- react-native - 从反应本机应用程序向 Auth0 api 发出请求
- html - 如何在 CSS3 网格中将一个单元格覆盖在其他两个单元格上
- java - 从 Flutter 调用 Java 代码会引发未处理的异常:MissingPluginException(未找到方法的实现...)
- javascript - 切换时不显示菜单
- r-markdown - 从 Rmarkdown 中的引文中编织参考文献,启用“已访问:”字段
- nginx - 在 NGINX 服务器上安装了 GHOST,我现在破坏了它的 ssl 配置文件 NGINX 不会重新启动
- python - 将非连续的 15 分钟数据重新采样为 pandas 中的每小时分组数据
- html - 页脚未在移动视图中完全显示
- android - 如何在实时数据库firebase android中存储下载图像url