Questions tagged «java»

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

9
返回ImmutableMap还是Map更好?
假设我正在写一个应该返回Map的方法。例如: public Map<String, Integer> foo() { return new HashMap<String, Integer>(); } 考虑了一段时间后,我决定创建该地图后就没有理由对其进行修改。因此,我想返回一个ImmutableMap。 public Map<String, Integer> foo() { return ImmutableMap.of(); } 我应该将返回类型保留为通用Map,还是应该指定要返回ImmutableMap? 从一方面来说,这正是创建接口的原因。隐藏实施细节。 另一方面,如果我这样保留它,其他开发人员可能会错过这个对象是不可变的事实。因此,我不会实现不可变对象的主要目标。通过最小化可以更改的对象数量来使代码更清晰。更糟糕的是,过了一会儿,有人可能会尝试更改此对象,这将导致运行时错误(编译器不会对此发出警告)。

3
如何检查EL中的布尔条件?
这样对吗? <c:if test="${theBooleanVariable == false}">It's false!</c:if> 还是我可以这样做? <c:if test="${!theBooleanVariable}">It's false!</c:if>
90 java  jsp  el 

3
具有输入/输出流的Java流程
我下面有以下代码示例。您可以在其中输入命令到bash shell,即echo test让结果回显。但是,先读后。其他输出流不起作用? 为什么会这样或我做错了什么?我的最终目标是创建一个线程计划任务,该任务定期执行对/ bash的命令,因此OutputStreamand InputStream必须串联工作而不停止工作。我也一直在经历错误的java.io.IOException: Broken pipe任何想法? 谢谢。 String line; Scanner scan = new Scanner(System.in); Process process = Runtime.getRuntime ().exec ("/bin/bash"); OutputStream stdin = process.getOutputStream (); InputStream stderr = process.getErrorStream (); InputStream stdout = process.getInputStream (); BufferedReader reader = new BufferedReader (new InputStreamReader(stdout)); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin)); …
90 java  stream 

15
文件存在时File.exists()返回false
我遇到了一个错误,但似乎找不到任何逻辑。我有这个File对象,它是这样创建的: File file = new File("utilities/data/someTextFile.txt"); 然后我做file.exists(),它返回false(!?)。如果找不到该文件,那么我正在登录f.getAbsolutePath()文件。当我查看路径时,似乎还可以。我可以将完整路径复制粘贴到Windows中的“运行”窗口中,文件可以正常打开。 该文件始终存在,在运行我的应用程序期间不会被删除或更改。它位于本地计算机上。 这似乎仅在某些情况下发生。我可以随时重现故障,但是我确定文件对象的路径不会因我为重现故障所采取的措施而改变。 什么会导致file.exists()返回假?这与权限或文件锁定等有关吗?
90 java  file-io 

14
如何在Eclipse启动时将本机库添加到“ java.library.path”(而不是覆盖它)
我有一个本机库,需要添加到java.library.path中。使用JVM参数-Djava.library.path = path ...我可以根据需要设置路径。 我的问题是我的其他库(pentaho报告)基于默认的java.library.path(包括系统目录等)搜索字体,而手动设置覆盖了默认路径。 因此:如何将路径条目添加到默认java.library.path而不是覆盖它(这似乎是通过-Djava.library.path完成的)?(我不想手动添加默认路径,这对于部署来说不是很好) 编辑:对不起,缺少详细信息;我正在使用Eclipse。(部署是通过JNLP完成的,在那里我可以在资源下使用 nativelib)

8
相似子句JPQL中的参数
我正在尝试使用like子句编写JPQL查询: LIKE '%:code%' 我想使用code = 4并找到 455 554 646 ... 我无法通过 :code = '%value%' namedQuery.setParameter("%" + this.value + "%"); 因为在另一个地方,我不需要:value用%字符包装。有什么帮助吗?

7
用Jackson序列化枚举
我下面有一个枚举: public enum OrderType { UNKNOWN(0, "Undefined"), TYPEA(1, "Type A"), TYPEB(2, "Type B"), TYPEC(3, "Type C"); private Integer id; private String name; private WorkOrderType(Integer id, String name) { this.id = id; this.name = name; } //Setters, getters.... } 我用控制器(new OrderType[] {UNKNOWN,TYPEA,TYPEB,TYPEC};)返回枚举数组,Spring将其序列化为以下json字符串: ["UNKNOWN", "TYPEA", "TYPEB", "TYPEC"] 强迫Jackson像POJO一样序列化枚举的最佳方法是什么?例如: [ {"id": 1, "name": …

8
如何使ArrayList成为线程安全的?用Java解决问题的另一种方法?
我有一个ArrayList,我想用来容纳RaceCar对象,这些对象在执行完后立即扩展Thread类。名为Race的类使用RaceCar对象完成执行后调用的回调方法来处理此ArrayList。回调方法addFinisher(RaceCar finisher)将RaceCar对象添加到ArrayList。这应该给出线程完成执行的顺序。 我知道ArrayList不同步,因此不是线程安全的。我尝试使用Collections.synchronizedCollection(c Collection)方法,方法是传入新的ArrayList并将返回的Collection分配给ArrayList。但是,这给了我一个编译器错误: Race.java:41: incompatible types found : java.util.Collection required: java.util.ArrayList finishingOrder = Collections.synchronizedCollection(new ArrayList(numberOfRaceCars)); 以下是相关代码: public class Race implements RaceListener { private Thread[] racers; private ArrayList finishingOrder; //Make an ArrayList to hold RaceCar objects to determine winners finishingOrder = Collections.synchronizedCollection(new ArrayList(numberOfRaceCars)); //Fill array with RaceCar objects for(int i=0; …

6
Java在构造函数中初始化一个int数组
我有一堂课,在那堂课我有: //some code private int[] data = new int[3]; //some code 然后在我的构造函数中: public Date(){ data[0] = 0; data[1] = 0; data[2] = 0; } 如果这样做,一切正常。默认数据值已初始化,但如果我改为这样做: public Date(){ int[] data = {0,0,0}; } 它说: Local variable hides a field 为什么? 在构造函数内部初始化数组的最佳方法是什么?
90 java 


6
使用map.get()时使用Java Map.containsKey()冗余
我一直想知道,在最佳实践中,是否允许不使用containsKey()on方法java.util.Map,而是对from的结果进行空检查get()。 我的理由是,对值进行两次查找似乎是多余的:首先对进行查找,containsKey()然后对进行查找get()。 另一方面,可能是大多数标准实现都Map缓存了最后的查找,或者编译器可以通过其他方式消除冗余,并且对于代码的可读性而言,最好保留该containsKey()部分。 非常感谢您的评论。


4
设置选项后,BitmapFactory.decodeStream返回null
我有的问题BitmapFactory.decodeStream(inputStream)。当不带选项使用它时,它将返回图像。但是当我将其与选项一起使用时,.decodeStream(inputStream, null, options)它永远不会返回位图。 我想要做的是在实际加载位图之前先对其进行降采样以节省内存。我已经阅读了一些不错的指南,但没有使用.decodeStream。 处理大位图 和这里 Android中的图像处理 作品精美 URL url = new URL(sUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); InputStream is = connection.getInputStream(); Bitmap img = BitmapFactory.decodeStream(is, null, options); 不工作 InputStream is = connection.getInputStream(); Bitmap img = BitmapFactory.decodeStream(is, null, options); InputStream is = connection.getInputStream(); Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = …
90 java  android  image  bitmap 


16
将许多参数传递给方法的最佳实践?
有时,我们必须编写接收许多参数的方法,例如: public void doSomething(Object objA , Object objectB ,Date date1 ,Date date2 ,String str1 ,String str2 ) { } 遇到此类问题时,我经常将参数封装到映射中。 Map<Object,Object> params = new HashMap<Object,Object>(); params.put("objA",ObjA) ; ...... public void doSomething(Map<Object,Object> params) { // extracting params Object objA = (Object)params.get("objA"); ...... } 这不是一个好习惯,将参数封装到地图中完全是浪费效率。好的是,干净的签名,易于以最少的修改添加其他参数。解决此类问题的最佳实践是什么?

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.