小编use*_*985的帖子

在 Java 中静态初始化 EnumMap 的最佳方法是什么

我需要静态初始化 EnumMap。我知道两种方法。

  1. 使用Map的of()方法

    private static final Map<<EnumKey>, <Value>> TEST_MAP = Map.of(ENUM_CONST1, "Value1", ENUM_CONST2, "Value2");
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用双括号初始化

    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)

还有其他更干净、更高效的方法吗?

java enums static enum-map

10
推荐指数
1
解决办法
1万
查看次数

为什么在 Java 8 中使用 @FunctionalInterface 注解

如果我们的接口中只有一个抽象方法,那么默认情况下它是函数式接口。任何人都可以解释@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)

java-8 functional-interface

9
推荐指数
3
解决办法
5227
查看次数

什么是与 Jackson 2.9.2 兼容的 Jersey 版本

你能帮我解决这两个查询/问题吗:

任何在 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 罐子的正确组合时也遇到过这个问题。如果有人可以指导,它会为我和其他人节省很多时间这个。

谢谢。

jersey-2.0 jackson2 jackson-databind

6
推荐指数
1
解决办法
5731
查看次数

映射mybatis中的字符串列表

我想使用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)

任何人都可以建议我们如何实现这一目标.

mybatis

4
推荐指数
1
解决办法
4万
查看次数

我们如何将yyyy-MM-dd-HH.mm.ss.SSSSSS转换为yyyy-MM-dd'T'HH:mm:ss.SSSz在Java中?

任何人都可以告诉我,我们如何在Java yyyy-MM-dd-HH.mm.ss.SSSSSS中将日期格式转换为日期 yyyy-MM-dd'T'HH:mm:ss.SSSz,其中输入和输出日期应该是字符串.

我已经使用了apache,DateFormatUtils但是输出中没有给出毫秒数.

java

1
推荐指数
1
解决办法
2万
查看次数

如何实例化和填充 Page&lt;Object[]&gt;

对于我的 Junit 测试用例,我需要实例化并填充

Page<Object[]> page;
Run Code Online (Sandbox Code Playgroud)

其中Page是Spring类org.springframework.data.domain.Page

您能告诉我如何实现这一目标吗?

java junit spring

1
推荐指数
1
解决办法
6187
查看次数