我有一个带有泛型返回类型的方法的接口,并且在运行时有一些间接实现该接口的类的实例.现在我想找出使用反射的每个实现的实际返回类型.
(我的想法是使用这种机制来定义使用接口的策略,并在运行时从一组策略实现中找到匹配的策略(特定的返回类型),而不必引入暴露类型的冗余辅助方法).
更具体地说,让我们考虑以下场景:
private interface DAO <I extends Serializable, E> {
public E getById (I id);
}
private abstract class AbstractDAO <T> implements DAO<Integer, T> {
@Override
public T getById (Integer id) {
// dummy implementation, just for this example
return null;
}
}
private class PersonDAO extends AbstractDAO<Person> {
}
private class PersonDAOExtension extends PersonDAO {
}
Run Code Online (Sandbox Code Playgroud)
在运行时,我想找出给定的class(PersonDAOExtension.class
)将为该方法返回哪种类型getById(..)
(期望为:) Person.class
.
使用反射,我可以找出Type
从这个方法返回的泛型.在这种情况下,它是一个TypeVariable
(但也可以是 …
对于 REST Web 服务,我需要返回带有时区的日期(无时间)。
ZonedDate
显然, Java 中没有 a 这样的东西(只有LocalDate
和ZonedDateTime
),所以我使用它ZonedDateTime
作为后备。
将这些日期转换为 JSON 时,我使用DateTimeFormatter.ISO_OFFSET_DATE
格式化日期,效果非常好:
DateTimeFormatter formatter = DateTimeFormatter.ISO_OFFSET_DATE;
ZonedDateTime dateTime = ZonedDateTime.now();
String formatted = dateTime.format(formatter);
Run Code Online (Sandbox Code Playgroud)
2018-04-19+02:00
然而,尝试解析这样的日期......
ZonedDateTime parsed = ZonedDateTime.parse(formatted, formatter);
Run Code Online (Sandbox Code Playgroud)
...导致异常:
java.time.format.DateTimeParseException:无法解析文本“2018-04-19+02:00”:无法从 TemporalAccessor 获取 ZonedDateTime:{OffsetSeconds=7200},ISO 解析为 java 类型的 2018-04-19。时间.格式.解析
我也尝试过ISO_DATE
并遇到了同样的问题。
我如何解析这样的分区日期?
或者是否有任何其他类型(在 Java Time API 内)我应该用于分区日期?
在我正在构建的Eclipse RCP应用程序中,我注意到当我重建部分GUI(通过添加/删除控件)时,GUI会在每次修改时立即更新并重新绘制,这会导致闪烁效果.
有没有办法启用双缓冲,以便GUI刷新只在事件发送周期结束时发生一次?
在我的Angular(4+)应用程序中,我想创建一个基本的插件机制:
示例:SearchStrategy
与实现的接口PersonSearchStrategy
和DocumentSearchStrategy
(两个服务,注册为提供者).
有没有办法通过查询SearchStrategy
接口的实现来动态获取这些服务的实例?怎么样?
(可能是一些与注射器相关的功能?)
为什么Throwable.class.getClassLoader()
返回null?有一些隐藏的知识吗?
My requirement is to send JSON data from service (A) to another service (B), in this case, I am sending emojis in JSON using Spring Boot RestTemplate. If I send a request from A to B, in the service B the message is displayed as a text with a question mark(?) instead of emoji.
Sending this JSON data
{
"from": "1233222225",
"to": "8585855858",
"message": "Hello A, hope you are doing 23012020 "
}
Run Code Online (Sandbox Code Playgroud)
displays in service B as
{
"from": …
Run Code Online (Sandbox Code Playgroud) java ×5
angular ×1
classloader ×1
date ×1
eclipse-rcp ×1
generics ×1
iso ×1
java-time ×1
reflection ×1
resttemplate ×1
spring-boot ×1
spring-rest ×1
swt ×1