Questions tagged «java»

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

16
您如何在Java中找到给定类的所有子类?
如何在Java中查找给定类的所有子类(或给定接口的所有实现者)?到目前为止,我有一种方法可以执行此操作,但是我发现它效率很低(至少可以这样说)。方法是: 获取类路径上存在的所有类名称的列表 加载每个类并测试以查看它是否是所需类或接口的子类或实现者 在Eclipse中,有一个很好的功能,称为类型层次结构(Type Hierarchy),可以很有效地显示这一点。如何进行编程?

11
当内存不足以引发OutOfMemoryError时会发生什么?
我知道每个对象都需要堆内存,而堆栈上的每个基本/引用都需要堆栈内存。 当我尝试在堆上创建对象并且没有足够的内存来执行此操作时,JVM 在堆上创建一个java.lang.OutOfMemoryError并将其扔给我。 因此,隐式地,这意味着JVM在启动时会保留一些内存。 当此保留的内存用完(肯定会用完,请阅读下面的讨论)并且JVM堆上没有足够的内存来创建java.lang.OutOfMemoryError实例时,会发生什么? 它只是挂了吗?还是null因为newOOM实例没有存储空间而将其扔给我? try { Object o = new Object(); // and operations which require memory (well.. that's like everything) } catch (java.lang.OutOfMemoryError e) { // JVM had insufficient memory to create an instance of java.lang.OutOfMemoryError to throw to us // what next? hangs here, stuck forever? …

16
在log4j中,在记录之前检查isDebugEnabled是否可以提高性能?
我在应用程序中使用Log4J进行日志记录。以前我使用像下面这样的调试调用: 选项1: logger.debug("some debug text"); 但有些链接建议最好先检查一下isDebugEnabled(),例如: 选项2: boolean debugEnabled = logger.isDebugEnabled(); if (debugEnabled) { logger.debug("some debug text"); } 所以我的问题是“ 选项2是否会以任何方式提高性能? ”。 因为在任何情况下,Log4J框架都对debugEnabled进行相同的检查。对于选项2,如果我们在单个方法或类中使用多个调试语句,则框架可能不需要isDebugEnabled()(在每次调用中)多次调用方法,这可能是有益的。在这种情况下,它isDebugEnabled()仅调用一次方法,并且如果Log4J配置为调试级别,则实际上它isDebugEnabled()两次调用方法: 如果将值分配给debugEnabled变量,则 实际是由logger.debug()方法调用的。 我不认为,如果我们logger.debug()在方法或类中编写多个语句,debug()然后根据选项1 调用方法,那么与选项2相比,它对Log4J框架来说是开销。因为这isDebugEnabled()是一个非常小的方法(就代码而言),所以成为内联的好人选。
207 java  logging  log4j 

9
Spring Boot配置和使用两个数据源
如何配置和使用两个数据源? 例如,这是我对第一个数据源的需求: application.properties #first db spring.datasource.url = [url] spring.datasource.username = [username] spring.datasource.password = [password] spring.datasource.driverClassName = oracle.jdbc.OracleDriver #second db ... 应用类别 @SpringBootApplication public class SampleApplication { public static void main(String[] args) { SpringApplication.run(SampleApplication.class, args); } } 如何修改application.properties以添加另一个数据源?如何自动布线以供其他存储库使用?


11
如何运行JAR文件
我创建了这样的JAR文件: jar cf Predit.jar *.* 我通过双击运行了这个JAR文件(它不起作用)。因此,我从DOS提示符运行了它,如下所示: java -jar Predit.jar 它引发了“无法加载主类”异常。所以我提取了这个JAR文件: jar -xf Predit.jar 我运行了类文件: java Predit 运行良好。我不知道为什么JAR文件不起作用。请告诉我运行JAR文件的步骤
207 java  jar 

23
带有Junit 4.7的IntelliJ IDEA 预期的JUnit版本3.8或更高版本:”
当我尝试在IntelliJ IDEA中运行以下测试时,收到消息: “ !!!预期的JUnit版本3.8或更高版本:” 应该注意的是,这是我在IntelliJ IDEA 9中正在处理的一个Android项目。 public class GameScoreUtilTest { @Test public void testCalculateResults() throws Exception { final Game game = new Game(); final Player player1 = new Player(); { final PlayedHole playedHole = new PlayedHole(); playedHole.setScore(1); game.getHoleScoreMap().put(player1, playedHole); } { final PlayedHole playedHole = new PlayedHole(); playedHole.setScore(3); game.getHoleScoreMap().put(player1, …


8
Optional.orElse()和Optional.orElseGet()之间的区别
我试图了解Optional<T>.orElse()和Optional<T>.orElseGet()方法之间的区别。 该orElse()方法的描述是“如果存在,则返回该值,否则返回其他”。 同时,对该orElseGet()方法的描述是“返回值(如果存在),否则调用其他值并返回该调用的结果”。 该orElseGet()方法采用Supplier功能接口,该接口基本上不接受任何参数并返回T。 您需要在哪种情况下使用orElseGet()?如果您有方法,T myDefault()为什么不做optional.orElse(myDefault())而不是做optional.orElseGet(() -> myDefault())呢? 似乎没有orElseGet()将lambda表达式的执行推迟到以后的某个时间执行,那么这有什么意义呢?(我本来以为这将是更有益的,如果它回到一个更安全的Optional<T>,其get()不会抛出一个NoSuchElementException和isPresent()始终返回true ...但显然它不是,它只是返回T像orElse())。 我还有其他区别吗?
206 java  java-8  optional 


7
哪个更有效,一个for-each循环或一个迭代器?
遍历集合的最有效方法是哪种? List<Integer> a = new ArrayList<Integer>(); for (Integer integer : a) { integer.toString(); } 要么 List<Integer> a = new ArrayList<Integer>(); for (Iterator iterator = a.iterator(); iterator.hasNext();) { Integer integer = (Integer) iterator.next(); integer.toString(); } 请注意,尽管最后一个问题的答案之一接近,但这不是this,this,this或this的精确重复。之所以不是这样,是因为其中大多数是比较循环get(i),而不是使用迭代器,而您在循环中调用该循环。 正如元建议,我将发布我对这个问题的答案。

5
为什么该Java程序终止了,尽管它显然不应该(也不应该)终止?
今天,我实验室中的一个敏感操作完全出错。电子显微镜上的执行器越过边界,经过一连串的事件,我损失了1200万美元的设备。我将故障模块中的40,000多行缩小为: import java.util.*; class A { static Point currentPos = new Point(1,2); static class Point { int x; int y; Point(int x, int y) { this.x = x; this.y = y; } } public static void main(String[] args) { new Thread() { void f(Point p) { synchronized(this) {} if (p.x+1 …

7
Java泛型何时需要<?扩展了T>而不是<T>,切换是否有不利之处?
给定以下示例(将JUnit与Hamcrest匹配器一起使用): Map&lt;String, Class&lt;? extends Serializable&gt;&gt; expected = null; Map&lt;String, Class&lt;java.util.Date&gt;&gt; result = null; assertThat(result, is(expected)); 这不能与以下内容的JUnit assertThat方法签名一起编译: public static &lt;T&gt; void assertThat(T actual, Matcher&lt;T&gt; matcher) 编译器错误消息是: Error:Error:line (102)cannot find symbol method assertThat(java.util.Map&lt;java.lang.String,java.lang.Class&lt;java.util.Date&gt;&gt;, org.hamcrest.Matcher&lt;java.util.Map&lt;java.lang.String,java.lang.Class &lt;? extends java.io.Serializable&gt;&gt;&gt;) 但是,如果我将assertThat方法签名更改为: public static &lt;T&gt; void assertThat(T result, Matcher&lt;? extends T&gt; matcher) 然后编译工作。 所以三个问题: 为什么当前版本完全不编译?尽管我在这里含糊地理解了协方差问题,但如果必须的话,我当然无法解释。 …
205 java  generics  junit 



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.