我需要静态初始化 EnumMap。我知道两种方法。
使用Map的of()方法
private static final Map<<EnumKey>, <Value>> TEST_MAP = Map.of(ENUM_CONST1, "Value1", ENUM_CONST2, "Value2");
Run Code Online (Sandbox Code Playgroud)
使用双括号初始化
private static final Map<<EnumKey>, <Value>> TEST_MAP = new EnumMap<>(EnumKey.class) {
{
put(ENUM_CONST1, "Value1");
put(ENUM_CONST2, "Value2");
}
};
Run Code Online (Sandbox Code Playgroud)
还有其他更干净、更高效的方法吗?
如果我们的接口中只有一个抽象方法,那么默认情况下它是函数式接口。任何人都可以解释@FunctionalInterface 注释带来的额外优势吗?
我知道如果我们添加@FunctionalAnnotation,它不会允许有人在接口中添加另一个抽象方法,因为它会给出编译错误,但我的意思是即使你不使用@FucntionalInterface注解,那么还有,如果有人会添加另一个抽象方法,它会破坏代码中所有现有的 lambda 表达式,编译器会抱怨。
例如:
如果我有以下界面:
public interface User {
Integer fetchData(Integer userId);
}
Run Code Online (Sandbox Code Playgroud)
具有以下实现:
public class UserImpl implements User{
@Override
public Integer fetchData(Integer userId) {
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
和以下用法:
公共类 TestFunctionalInterface {
public static void main(String[] args) {
User user = a -> a*2;
System.out.println("FetchedData:"+user.fetchData(2));
}
Run Code Online (Sandbox Code Playgroud)
}
现在,如果我尝试在界面中添加另一个方法,如下所示:
public interface User {
Integer fetchData(Integer userId);
Integer fetchLoginDetails(Integer userId);
}
Run Code Online (Sandbox Code Playgroud)
编译器在下面的代码中抱怨:
public class TestFunctionalInterface {
public static void main(String[] args) {
User user = a -> a*2;
System.out.println("FetchedData:"+user.fetchData(2)); …Run Code Online (Sandbox Code Playgroud) 你能帮我解决这两个查询/问题吗:
任何在 Jackson 2.9.2 上工作过的人都可以告诉我什么是 Jackson 2.9.2 的兼容 Jersey 版本。我目前使用的是 Jersey 2.23.2,但它不适用于 Jackson 2.9.2。我收到以下错误:
[ERROR ] SRVE0777E: Exception thrown by application class 'org.glassfish.jersey.servlet.WebComponent.serviceImpl:489'
javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.util.BeanUtil.okNameForSetter(Lcom/fasterxml/jackson/databind/introspect/AnnotatedMethod;)Ljava/lang/String;
at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:489)
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1290)
Run Code Online (Sandbox Code Playgroud)
2)总的来说,有没有办法找到罐子的组合。我在找到 Jersey 和 Spring 罐子的正确组合时也遇到过这个问题。如果有人可以指导,它会为我和其他人节省很多时间这个。
谢谢。
我想使用mybatis来修复字符串列表.我正在使用以下代码,但是如下所示获取illegalArgument异常:
javax.servlet.ServletException: org.mybatis.spring.MyBatisSystemException: SqlSession operation; nested exception is java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for java.lang.Object.toString
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
Run Code Online (Sandbox Code Playgroud)
Mybatis配置:
<select id="fetchIds" resultType="java.lang.String" >
SELECT distinct ids
FROM abc.emp
</select>
Run Code Online (Sandbox Code Playgroud)
我的道法是:
@Override
public List<String> fetchIds() {
System.out.println("Inside fetchIds");
SqlSession session = null;
List retrieveList = null;
try{
session = sqlSessionFactory.openSession();
System.out.println("After session creation:"+session);
retrieveList = session.selectList("fetchIds");
}finally{
session.close();
}
return retrieveList;
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议我们如何实现这一目标.
任何人都可以告诉我,我们如何在Java yyyy-MM-dd-HH.mm.ss.SSSSSS中将日期格式转换为日期 yyyy-MM-dd'T'HH:mm:ss.SSSz,其中输入和输出日期应该是字符串.
我已经使用了apache,DateFormatUtils但是输出中没有给出毫秒数.
对于我的 Junit 测试用例,我需要实例化并填充
Page<Object[]> page;
Run Code Online (Sandbox Code Playgroud)
其中Page是Spring类org.springframework.data.domain.Page
您能告诉我如何实现这一目标吗?