Questions tagged «java»

Java是一种流行的高级编程语言。如果您在使用或理解语言本身时遇到问题,请使用此标签。这个标签很少单独使用,最常与[spring],[spring-boot],[jakarta-ee],[android],[javafx],[gradle]和[maven]结合使用。


13
Singleton的替代品是什么
我们有一个类,其中包含应用程序的配置信息。它曾经是一个单身人士。经过一些体系结构审查后,我们被告知删除单例。我们确实看到了在单元测试中不使用单例的一些好处,因为我们可以同时测试不同的配置。 没有单例,我们必须在代码中的所有地方传递实例。变得如此混乱,所以我们写了一个单例包装器。现在,我们正在将相同的代码移植到PHP和.NET,我想知道是否可以为配置对象使用更好的模式。

15
JPA:对大型结果集进行迭代的正确模式是什么?
假设我有一个包含数百万行的表。使用JPA,迭代对该表的查询的正确方法是什么,这样我就不会拥有一个包含数百万个对象的内存列表? 例如,如果表很大,我怀疑以下内容会爆炸: List<Model> models = entityManager().createQuery("from Model m", Model.class).getResultList(); for (Model model : models) { System.out.println(model.getId()); } 分页(循环和手动更新setFirstResult()/ setMaxResult())真的是最好的解决方案吗? 编辑:我针对的主要用例是一种批处理作业。如果需要很长时间才能运行就可以了。没有涉及Web客户端。我只需要为每一行“做某事”,一次一行(或一些小N)。我只是想避免将它们全部同时存储在内存中。
114 java  hibernate  jpa 

3
在Java中将double转换为整数
在Java中,我想将双精度型转换为整数,我知道您是否这样做: double x = 1.5; int y = (int)x; 您得到y = 1。如果您这样做: int y = (int)Math.round(x); 您可能会得到2。但是,我想知道:由于整数的双精度表示有时看起来像1.9999999998或类似的东西,因此通过Math.round()创建的双精度转换是否仍然会导致截断的向下数字,而不是比我们要寻找的舍入数(即:1而不是所示代码中的2)? (是的,我确实是这样说的:x 是否有任何值,其中y将显示结果被截断而不是四舍五入的x表示?) 如果是这样:是否有更好的方法可以将双精度型转换为舍入型整数而不冒被截断的风险? 找到了一些东西:Math.round(x)返回一个long,而不是double。因此:Math.round()无法返回看起来像3.9999998的数字。因此,int(Math.round())无需截断任何内容,并且始终可以工作。
114 java  casting  double  rounding 


7
在JPA 2中,使用CriteriaQuery,如何计算结果
我对JPA 2相当陌生,它是CriteriaBuilder / CriteriaQuery API: CriteriaQuery Java文档 CriteriaQuery 在Java EE 6教程中 我想计算一个CriteriaQuery的结果而不实际检索它们。那有可能吗,我没有找到任何这样的方法,唯一的办法就是这样做: CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQuery<MyEntity> cq = cb .createQuery(MyEntityclass); // initialize predicates here return entityManager.createQuery(cq).getResultList().size(); 那不可能是正确的方法... 有解决方案吗?

15
正则表达式用于在不被单引号或双引号引起来时使用空格分割字符串
我是正则表达式的新手,非常感谢您的帮助。我正在尝试将一个表达式组合在一起,该表达式将使用所有未用单引号或双引号引起来的空格来拆分示例字符串。我的最后一次尝试看起来像这样:(?!")并且效果不佳。它在报价前的空格处分开。 输入示例: This is a string that "will be" highlighted when your 'regular expression' matches something. 所需的输出: This is a string that will be highlighted when your regular expression matches something. 注意"will be"并'regular expression'保留单词之间的空格。
114 java  regex  split 

4
分配布局时出现错误:BoxLayout无法共享
我有这个Java JFrame类,我想在其中使用boxlayout,但出现错误提示java.awt.AWTError: BoxLayout can't be shared。我已经看到其他人遇到了这个问题,但是他们通过在contentpane上创建boxlayout解决了这个问题,但这就是我在这里所做的。这是我的代码: class EditDialog extends JFrame { JTextField title = new JTextField(); public editDialog() { setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setTitle("New entity"); getContentPane().setLayout( new BoxLayout(this, BoxLayout.PAGE_AXIS)); add(title); pack(); setVisible(true); } }
114 java  swing  layout  boxlayout 

7
Hamcrest比较收藏
我正在尝试比较2个列表: assertThat(actual.getList(), is(Matchers.containsInAnyOrder(expectedList))); 但是主意 java: no suitable method found for assertThat(java.util.List<Agent>,org.hamcrest.Matcher<java.lang.Iterable<? extends model.Agents>>) method org.junit.Assert.<T>assertThat(T,org.hamcrest.Matcher<T>) is not applicable (no instance(s) of type variable(s) T exist so that argument type org.hamcrest.Matcher<java.lang.Iterable<? extends model.Agents>> conforms to formal parameter type org.hamcrest.Matcher<T>) method org.junit.Assert.<T>assertThat(java.lang.String,T,org.hamcrest.Matcher<T>) is not applicable (cannot instantiate from arguments because actual and …
114 java  junit  hamcrest 


13
导入org.junit无法解析
我需要为面试解决一个Java问题,他们已经向我发送了测试课程。它开始于 import org.junit.Before; 并在以下位置具有以下语法: @RunWith(JUnit4.class) ... @Before ... @Test 我已经有一段时间没有使用Java了,这使我有些困惑。我下载了eclipse,当我尝试编译该测试文件时,导入和@符号出现错误。导入错误引发: The import org.junit cannot be resolved. @RunWith甚至无法识别,因为它试图将其解析为一种类型。
114 java  eclipse 

8
使用Servlet过滤器修改请求参数
现有的Web应用程序正在Tomcat 4.1上运行。页面存在XSS问题,但是我无法修改源代码。我决定编写一个servlet过滤器以在页面看到参数之前对其进行清理。 我想这样编写一个Filter类: import java.io.*; import javax.servlet.*; public final class XssFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String badValue = request.getParameter("dangerousParamName"); String goodValue = sanitize(badValue); request.setParameter("dangerousParamName", goodValue); chain.doFilter(request, response); } public void destroy() { } public void init(FilterConfig filterConfig) { } …

9
如何正确覆盖克隆方法?
我需要在我的没有超类的对象中实现一个深层克隆。 处理CloneNotSupportedException超类(即Object)引发的检查的最佳方法是什么? 一位同事建议我按以下方式处理: @Override public MyObject clone() { MyObject foo; try { foo = (MyObject) super.clone(); } catch (CloneNotSupportedException e) { throw new Error(); } // Deep clone member fields here return foo; } 对于我来说,这似乎是一个不错的解决方案,但是我想将其扔给StackOverflow社区,以查看是否有我可以提供的其他见解。谢谢!
114 java  clone  cloning  cloneable 

1
slf4j和log4j2一起使用是否值得
我无法决定是否将slf4j与log4j2一起使用。根据在线帖子,看起来它不会对性能产生任何影响,但这确实是必需的。 同样,以下几点有利于log4j2: SLF4J强制您的应用程序记录字符串。如果要记录文本,Log4j 2 API支持记录任何CharSequence,还支持按原样记录任何对象。 Log4j 2 API提供了对记录消息对象,Java 8 lambda表达式和无垃圾记录的支持(它在记录CharSequence对象时避免创建vararg数组并避免创建String)。
114 java  logging  log4j  slf4j  log4j2 

6
如何使用Lambda表达式调试stream()。map(...)?
在我们的项目中,我们正在迁移到Java 8,并且正在测试它的新功能。 在我的项目中,我使用Guava谓词和函数使用Collections2.transform和过滤和转换某些集合Collections2.filter。 在此迁移中,我需要将番石榴代码更改为java 8更改。因此,我正在做的更改是: List<Integer> naturals = Lists.newArrayList(1,2,3,4,5,6,7,8,9,10,11,12,13); Function <Integer, Integer> duplicate = new Function<Integer, Integer>(){ @Override public Integer apply(Integer n) { return n * 2; } }; Collection result = Collections2.transform(naturals, duplicate); 至... List<Integer> result2 = naturals.stream() .map(n -> n * 2) .collect(Collectors.toList()); 使用番石榴,我可以很轻松地调试代码,因为我可以调试每个转换过程,但是我关心的是例如如何调试 .map(n -> n*2)。 使用调试器,我可以看到一些类似的代码: …
114 java  debugging  lambda  java-8 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.