Questions tagged «java»

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

5
Mockito匹配任何类参数
有没有办法匹配以下示例例程的任何类参数? class A { public B method(Class<? extends A> a) {} } 无论传递到哪个类,如何始终返回a ?以下尝试仅适用于匹配的特定情况。new B()methodA A a = new A(); B b = new B(); when(a.method(eq(A.class))).thenReturn(b); 编辑:一种解决方案是 (Class<?>) any(Class.class)

26
Java 8流反向顺序
一般问题:反向流的正确方法是什么?假设我们不知道流包含什么类型的元素,反转任何流的通用方法是什么? 具体问题: IntStream提供了生成特定范围内的整数的范围方法IntStream.range(-range, 0),现在我想将其范围从0切换为负数将不起作用,也无法使用Integer::compare List<Integer> list = Arrays.asList(1,2,3,4); list.stream().sorted(Integer::compare).forEach(System.out::println); 与IntStream我会得到这个编译器错误 错误:(191,0)ajc:sorted()类型中的方法IntStream不适用于参数(Integer::compare) 我在这里想念什么?

3
什么时候应该实现Serializable接口?
public class Contact implements Serializable { private String name; private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } 什么时候应该实现Serializable接口? 我们为什么要这样做? 它具有任何优势或安全性吗?



12
Android从输入流中高效读取
我正在向正在制作的android应用程序的网站发出HTTP get请求。 我正在使用DefaultHttpClient并使用HttpGet发出请求。我得到实体响应,并从中获得一个InputStream对象,以获取页面的html。 然后,我循环浏览答复,如下所示: BufferedReader r = new BufferedReader(new InputStreamReader(inputStream)); String x = ""; x = r.readLine(); String total = ""; while(x!= null){ total += x; x = r.readLine(); } 但是,这太慢了。 这效率低下吗?我没有加载较大的网页-www.cokezone.co.uk,因此文件大小不大。有一个更好的方法吗? 谢谢 安迪


6
log4j vs logback [关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 6年前关闭。 改善这个问题 我们在自制包装器后面使用log4j。我们计划现在使用它的更多功能。 我们应该更新到登录吗? (我的意思是框架不是像SLF4J这样的外观)
152 java  logging  log4j  logback 

11
如何将堆栈跟踪发送到log4j?
假设您执行e.printStackTrace(),则捕获到一个异常并在标准输出(例如控制台)上获得以下内容: java.io.FileNotFoundException: so.txt at java.io.FileInputStream.<init>(FileInputStream.java) at ExTest.readMyFile(ExTest.java:19) at ExTest.main(ExTest.java:7) 现在,我想将其发送给log4j之类的记录器,以获取以下信息: 31947 [AWT-EventQueue-0] ERROR Java.io.FileNotFoundException: so.txt 32204 [AWT-EventQueue-0] ERROR at java.io.FileInputStream.<init>(FileInputStream.java) 32235 [AWT-EventQueue-0] ERROR at ExTest.readMyFile(ExTest.java:19) 32370 [AWT-EventQueue-0] ERROR at ExTest.main(ExTest.java:7) 我怎样才能做到这一点? try { ... } catch (Exception e) { final String s; ... // <-- What goes here? log.error( s …

5
JUnit困惑:使用“扩展TestCase”还是“ @Test”?
我发现JUnit的正确使用(或至少是文档)非常令人困惑。这个问题既可以作为将来的参考,也可以作为真实的问题。 如果我理解正确,那么可以使用两种主要方法来创建和运行JUnit测试: 方法A(JUnit 3样式):创建一个扩展TestCase的类,并使用单词启动测试方法test。当将类作为JUnit测试运行(在Eclipse中)时,所有以单词开头的方法都会test自动运行。 import junit.framework.TestCase; public class DummyTestA extends TestCase { public void testSum() { int a = 5; int b = 10; int result = a + b; assertEquals(15, result); } } 方法B(JUnit 4样式):创建一个“普通”类,并@Test在方法前添加注释。请注意,您不必以单词开头的方法test。 import org.junit.*; import static org.junit.Assert.*; public class DummyTestB { @Test public void Sum() { …

5
为什么int i = 1024 * 1024 * 1024 * 1024编译时没有错误?
上限为int-2147483648至2147483647。 如果我输入 int i = 2147483648; 然后Eclipse将在“ 2147483648”下提示红色下划线。 但是,如果我这样做: int i = 1024 * 1024 * 1024 * 1024; 它将编译正常。 public class Test { public static void main(String[] args) { int i = 2147483648; // error int j = 1024 * 1024 * 1024 * 1024; // no error } …
152 java  int 

9
如何在Mockito中正确匹配varargs
我一直在尝试使用Mockito模拟具有vararg参数的方法: interface A { B b(int x, int y, C... c); } A a = mock(A.class); B b = mock(B.class); when(a.b(anyInt(), anyInt(), any(C[].class))).thenReturn(b); assertEquals(b, a.b(1, 2)); 这不起作用,但是如果我改为这样做: when(a.b(anyInt(), anyInt())).thenReturn(b); assertEquals(b, a.b(1, 2)); 尽管我在对方法进行存根时已经完全省略了varargs参数,但这仍然有效。 有什么线索吗?

3
为什么多次添加0.1仍然无损?
我知道0.1十进制数不能用有限的二进制数精确地表示(解释),因此double n = 0.1将失去一些精度,并且将不精确0.1。另一方面,0.5因为它确实可以表示0.5 = 1/2 = 0.1b。 话虽如此,将0.1 三遍相加并不完全是可以理解的,0.3因此,以下代码将输出false: double sum = 0, d = 0.1; for (int i = 0; i < 3; i++) sum += d; System.out.println(sum == 0.3); // Prints false, OK 但是,0.1 五次相加会得到确切的结果0.5呢?以下代码显示true: double sum = 0, d = 0.1; for (int i = 0; …

7
Java:整数等于= =
从Java 1.5中,你几乎可以互换Integer使用int在许多情况下。 但是,我发现代码中存在潜在的缺陷,这让我有些惊讶。 如下代码: Integer cdiCt = ...; Integer cdsCt = ...; ... if (cdiCt != null && cdsCt != null && cdiCt != cdsCt) mismatch = true; 值相等时,似乎错误地设置了不匹配,尽管我无法确定在什么情况下。我在Eclipse中设置了一个断点,发现Integer值都为137,并且检查了布尔表达式,并说它是假的,但是当我越过它时,它会将不匹配设置为true。 将条件更改为: if (cdiCt != null && cdsCt != null && !cdiCt.equals(cdsCt)) 解决了问题。 谁能阐明为什么会这样?到目前为止,我只在自己的PC上的本地主机上看到了该行为。在这种情况下,代码成功地进行了约20次比较,但失败了2次。该问题始终可再现。 如果这是一个普遍的问题,那应该会在我们的其他环境(开发和测试)上引起错误,但是到目前为止,在执行了数百个测试代码片段之后,没有人报告过该问题。 ==比较两个Integer值是否仍然不合法? 除了以下所有出色的答案之外,下面的stackoverflow链接还有很多其他信息。它实际上会回答我原来的问题,但是因为我没有在问题中提及自动装箱,所以它没有出现在所选建议中: 为什么编译器/ JVM不能使自动装箱“正常工作”?

6
如何添加到列表<?扩展Number>数据结构?
我有一个这样声明的清单: List&lt;? extends Number&gt; foo3 = new ArrayList&lt;Integer&gt;(); 我试图将3添加到foo3中。但是我收到这样的错误消息: The method add(capture#1-of ? extends Number) in the type List&lt;capture#1-of ? extends Number&gt; is not applicable for the arguments (ExtendsNumber)
152 java  generics 

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.