Questions tagged «java»

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

8
捕获和最终返回语句的行为
请参见以下代码,并解释输出行为。 public class MyFinalTest { public int doMethod(){ try{ throw new Exception(); } catch(Exception ex){ return 5; } finally{ return 10; } } public static void main(String[] args) { MyFinalTest testEx = new MyFinalTest(); int rVal = testEx.doMethod(); System.out.println("The return Val : "+rVal); } } 结果是返回Val:10。 Eclipse显示警告:finally block does not …

5
将对象数组转换为整数数组错误
以下代码有什么问题? Object[] a = new Object[1]; Integer b=1; a[0]=b; Integer[] c = (Integer[]) a; 该代码在最后一行有以下错误: 线程“主”中的异常java.lang.ClassCastException:[Ljava.lang.Object; 无法转换为[Ljava.lang.Integer;
71 java  casting 


6
如何确定ResultSet中是否存在列名?
由于ResultSet包含从动态SQL返回的数据,是否有任何方法确定ResultSet包含是否包含特定的列名? 例如,如果我跑步rs.getString("Column_ABC")但"Column_ABC"实际上并不存在,它将抛出异常。 我如何测试是否ResultSet可以从名为的列中获取数据"Column_ABC"?
71 java  jdbc  resultset 


12
为什么要使用接口,多重继承与接口,接口的优点?
我对此事仍然有些困惑。我到目前为止发现的是 (这里已经问过类似的问题,但我还有其他几点。) 接口是仅抽象方法和最终字段的集合。 Java中没有多重继承。 接口可用于在Java中实现多重继承。 继承的一个强项是我们可以在派生类中使用基类的代码,而无需再次编写。可能这是继承在那里最重要的事情。 现在.. Q1。由于接口仅具有抽象方法(无代码),因此,我们如何说如果实现任何接口,那么它就是继承?我们没有使用它的代码。 Q2。如果实现接口不是继承,那么如何使用接口实现多重继承? Q3。无论如何,使用接口有什么好处?他们没有任何代码。我们需要在实现它的所有类中一次又一次地编写代码。 那为什么要建立接口呢? 注意:我发现一种情况下接口是有用的。它的一个示例就像在Runnable接口中,我们有public void run()方法,在其中定义线程的功能,并且内置了编码,该方法将作为单独的线程运行。因此,我们只需要编写线程中的操作代码,Rest是预定义的。但是,这也可以使用抽象类和全部来实现。 那么使用接口的确切好处是什么?使用接口实现的真的是多重继承吗?

21
maven…无法清理项目:无法删除.. \ org.ow2.util.asm-asm-tree-3.1.jar
我使用STS(弹簧工具套件)+ maven插件。 每次当我使用我的应用程序运行时,都会maven-clean看到以下错误: [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building hhsystem ui 1.0.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ ui --- [INFO] Deleting C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.471s [INFO] Finished at: Mon Oct 21 12:34:33 MSK 2013 [INFO] Final …


7
用Java实现协程
这个问题与我有关Java中现有协程实现的问题有关。如我所怀疑的,如果事实证明Java中没有可用的协程的完整实现,那么实现它们将需要什么? 正如我在这个问题中所说的,我了解以下内容: 您可以将“协程”实现为后台的线程/线程池。 您可以在后台使用JVM字节码来完成棘手的事情,以使协程成为可能。 所谓的“达芬奇机” JVM实现具有使协程在无需字节码操作的情况下就可以实现的原语。 也有多种基于JNI的协程方法。 我将依次解决每个人的不足之处。 基于线程的协程 这种“解决方案”是病态的。协程的全部目的是避免线程,锁定,内核调度等开销。协程应该轻巧,快速,并且只能在用户空间中执行。根据具有严格限制的全倾斜线程来实现它们会失去所有优势。 JVM字节码操作 此解决方案更实用,尽管很难实现。这大致相当于跳入C语言中的协程库的汇编语言(这是其中的许多工作原理),其优点是您只需要担心一种架构即可。 除非您找到在不兼容的JVM堆栈上执行相同操作的方法,否则还将使您只能在完全兼容的JVM堆栈(例如,没有Android)上运行代码。但是,如果确实找到了解决方法,那么您现在已经将系统复杂性和测试需求提高了一倍。 达芬奇机 达芬奇机很酷,可以进行实验,但是由于它不是标准的JVM,因此它的功能不会在任何地方都可用。实际上,我怀疑大多数生产环境都将特别禁止使用达芬奇机器。因此,我可以使用它来进行出色的实验,但不能用于我希望发布到现实世界中的任何代码。 这也具有类似于上面的JVM字节码操作解决方案的附加问题:在替代堆栈(如Android的堆栈)上将不起作用。 JNI实施 这种解决方案完全没有用Java来做到这一点。CPU和操作系统的每种组合都需要独立的测试,并且每一个都是潜在的令人沮丧的细微故障点。另外,当然,我可以将自己完全束缚在一个平台上,但这也使得在Java中做事情完全没有意义。 所以... 是否可以在不使用这四种技术之一的情况下用Java实现协程?还是我会被迫使用气味最小的那四种(JVM操作)中的一种? 编辑添加: 只是为了确保避免混淆,这是与我的另一个相关的问题,但并非相同。为了避免不必要地重新发明轮子,那个人正在寻找现有的实现。这个问题涉及一个问题,即如果另一个问题无法解决,如何在Java中实现协程。目的是在不同的线程上保留不同的问题。

6
如何防止Gson将整数表示为浮点数
当我尝试将字符串转换为json时,Gson有一些奇怪的行为。下面的代码将字符串草稿转换为json响应。有没有一种方法可以防止gson将'.0加到所有整数值? ArrayList<Hashtable<String, Object>> responses; Type ResponseList = new TypeToken<ArrayList<Hashtable<String, Object>>>() {}.getType(); responses = new Gson().fromJson(draft, ResponseList); draft: [ {"id":4077395,"field_id":242566,"body":""}, {"id":4077398,"field_id":242569,"body":[[273019,0],[273020,1],[273021,0]]}, {"id":4077399,"field_id":242570,"body":[[273022,0],[273023,1],[273024,0]]} ] responses: [ {id=4077395.0, body=, field_id=242566.0}, {id=4077398.0, body=[[273019.0, 0.0], [273020.0, 1.0], [273021.0, 0.0]], field_id=242569.0}, {id=4077399.0, body=[[273022.0, 0.0], [273023.0, 1.0], [273024.0, 0.0]], field_id=242570.0} ]
71 java  android  gson 


6
tomcat-dbcp与commons-dbcp
这两个连接池库之间似乎有很多混淆。我想知道哪个更好(如果有的话)? 我要提出以下几点...有人可以验证吗? Tomcat DBCP:使用默认的tomcat-dbcp.jar,它将出现在您的tomcat / lib目录中。您不需要在web-inf / lib中使用commons-dbcp.jar或commons-pool.jar库。数据库驱动程序应放置在tomcat / lib中。 Tomcat DBCP数据源类为org.apache.tomcat.dbcp.dbcp.BasicDataSource。Commons DBCP数据源类为org.apache.commons.dbcp.BasicDataSource。 两者之间的唯一区别可以在此博客中找到。不知道信息是否正确。 Tomcat的官方文档清楚地提到,大多数类都刚刚被重命名和重新打包。 因此,问题是:使用哪一个更好?

9
用Java管理高度重复的代码和文档
高度重复的代码通常是不好的事情,并且有些设计模式可以帮助最大程度地减少这种情况。但是,由于语言本身的限制,有时这是不可避免的。以以下示例为例java.util.Arrays: /** * Assigns the specified long value to each element of the specified * range of the specified array of longs. The range to be filled * extends from index <tt>fromIndex</tt>, inclusive, to index * <tt>toIndex</tt>, exclusive. (If <tt>fromIndex==toIndex</tt>, the * range to be filled is empty.) * * …

14
匹配的通配符是严格的,但是找不到元素'context:component-scan的声明
尝试我的第一个春季项目时出现以下错误: Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'context:component-scan 这是applicationContext.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <context:component-scan base-package="com.xyz" /> </beans> 是什么导致错误?
71 java  spring 

6
在使用ConcurrentMap的putIfAbsent之前是否应该检查地图是否包含Key
我一直在使用Java的ConcurrentMap作为可从多个线程使用的地图。putIfAbsent是一种很棒的方法,比使用标准映射操作更容易读/写。我有一些看起来像这样的代码: ConcurrentMap<String, Set<X>> map = new ConcurrentHashMap<String, Set<X>>(); // ... map.putIfAbsent(name, new HashSet<X>()); map.get(name).add(Y); 在可读性方面,这很棒,但是每次都需要创建一个新的HashSet,即使它已经在地图中了。我可以这样写: if (!map.containsKey(name)) { map.putIfAbsent(name, new HashSet<X>()); } map.get(name).add(Y); 进行此更改后,它将失去一些可读性,但无需每次都创建HashSet。在这种情况下哪个更好?我倾向于第一个,因为它更具可读性。第二个将表现更好,并且可能更正确。也许有比这两种方法更好的方法。 以这种方式使用putIfAbsent的最佳实践是什么?

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.