标签: java-6

为什么 javac -source 1.5 允许在接口方法上使用 @Override?

如果我理解正确的话,这里是一些在 1.5 下非法的示例 java 代码(因为@Override在 java 1.6 之前不能用于重写接口方法):

public class A { 
  public static interface MyInterface { 
    public void myInterfaceMethod();
  }
  public static class MyClass implements MyInterface { 
    @Override public void myInterfaceMethod() {}
  }
} 
Run Code Online (Sandbox Code Playgroud)

我想在我的源代码中找到所有此类 1.5 不兼容性,因此我在我的 ubuntu Linux 机器上安装了一个支持 java1.5 的编译器:

sudo apt install openjdk-8-jdk
JAVAROOT=/usr/lib/jvm/java-1.8.0-openjdk-amd64
${JAVAROOT}/bin/javac -version
# javac 1.8.0_232
Run Code Online (Sandbox Code Playgroud)

并编译了上面的java源代码:

${JAVAROOT}/bin/javac -source 1.5 -Xlint:all -Xlint:-options A.java
Run Code Online (Sandbox Code Playgroud)

我预计上面的java代码会被拒绝。但尽管在 1.5 下存在非法行为,但它显然编译成功了。

这是怎么回事?我是否误解了 1.5 规则@Override?或者我误解了-source 1.5应该做什么?

FWIW,我注意到这-source 1.4确实给出了预期的错误:

${JAVAROOT}/bin/javac -source …
Run Code Online (Sandbox Code Playgroud)

java java-5 java-6

5
推荐指数
1
解决办法
177
查看次数

Java:Java 6何时可以为最终用户桌面应用程序做好准备?

我正在编写一个用Java 1.5开发的用Swing编写的桌面应用程序.一些用户似乎在使用Mac,但我对Java 6的脚本功能感兴趣(Java 6附带Rhino).Java 6虽然在差不多2年前推出,但似乎并未广泛使用.我也听说Apple仅为Intel 64 Macs提供Java 6.Java 1.5是最后运行的Java吗?

Java 6现在是否已为最终用户桌面应用程序做好准备了?更待何时?

编辑:不要因为我正在使用Swing这个事实而陷入困境.我想知道什么时候Java 6可以被认为是准备黄金时间,而不是UI库的选择.

java macos swing java-6

4
推荐指数
1
解决办法
743
查看次数

Java 6和JaxB 2.1

Java 6的原始版本附带了JAXB 2,但我被告知"后来的"Java 6版本随JAXB 2.1发布.

有谁知道JAXB 2.1附带的第一个Java 6版本是什么?

java jaxb jaxb2 java-6

4
推荐指数
1
解决办法
4952
查看次数

Java - 如何在另一个列表的列表中查找项目数

说我有两个清单:

List<String>products = new ArrayList<String>(); 
products.add("computer"); 
products.add("phone"); 
products.add("mouse"); 
products.add("keyboard"); 

List<String>cart = new ArrayList<String>(); 
cart.add("phone"); 
cart.add("monitor"); 
Run Code Online (Sandbox Code Playgroud)

我需要找到产品列表中存在的购物车清单中有多少商品.对于上面的列表,答案是1(因为电话在产品和购物车中).如果购物车清单是:

List<String>cart = new ArrayList<String>(); 
cart.add("desk"); 
cart.add("chair"); 
Run Code Online (Sandbox Code Playgroud)

结果将是0.如果购物车包含计算机,鼠标,桌子,椅子,结果将是2(对于计算机和鼠标).

有什么东西在Apache的百科全书集合谷歌集合API?我仔细查看过它们,看看如何计算行李数,但不是从另一个列表,尽管我可能会遗漏一些东西.现在,我能想到的唯一方法是迭代购物车商品,看看产品是否包含单个商品并保持计数.我不能使用containsAll,因为我需要count(不是布尔值),如果购物车中的所有商品都不存在于产品列表中(这可能会发生),那么这将失败.

如果重要的话,我正在使用Java 1.6.

java list count java-6

4
推荐指数
2
解决办法
9543
查看次数

在Android中使用十进制格式舍入一半

我想在我的DecimalFormat上将舍入模式设置为HALF_UP,但是eclipse告诉我在DecimalFormat类上没有setRoundingMode().我的项目属性(以及整个Eclipse属性)使用的是1.6编译器.developer.android.com网站说我可以使用Java 5或6,所以我不确定问题是什么.

import java.math.RoundingMode;
import java.text.DecimalFormat;

completedValueFormatter = NumberFormat.getNumberInstance(); DecimalFormat completedDecimalFormat = (DecimalFormat)completedValueFormatter; completedDecimalFormat.setRoundingMode(RoundingMode.HALF_UP);

我也尝试使用android工具生成一个基于ant的项目,在项目中尝试了这个代码,并得到了相同的编译错误.所以它似乎与Eclipse无关.它似乎与Android API有关.

有什么建议?

java eclipse android rounding java-6

4
推荐指数
1
解决办法
7754
查看次数

是否有同步的AND排序地图对象(LinkedHashTable)?

我正在创建一个servlet.Filter实现,其中我在将请求发送到servlet之前,基于IP地址在数据库中查找用户ID.

如果已经有来自同一IP地址的请求在数据库中查找,我希望我的过滤器将传入的请求存储到类似地图的对象中.然后当我从数据库得到响应时,我会将它应用于该IP地址的所有请求,并将它们发送到servlet的路上.

类似地图的对象需要同步,但也要保持插入顺序,这样一旦我找到用户ID,所有存储的请求"将按接收顺序处理".

通过API有一个LinkedHashMap可以维持订单正常但不同步的,它HashTable是同步的,但没有给出任何迹象表明它会保持正确的顺序.

LinkedHashTable我可以使用某种物品吗?

我使用的是Java 6.

java map synchronized linkedhashmap java-6

4
推荐指数
1
解决办法
3201
查看次数

在AtomicInteger类中实现addAndGet

我正在为类中的addAndGet方法编写Java(Java 6)源代码AtomicInteger.

相应的代码如下:

public final int addAndGet(int delta) {
    for (;;) {
        int current = get();
        int next = current + delta;
        if (compareAndSet(current, next))
            return next;
    }
}
Run Code Online (Sandbox Code Playgroud)

compareAndSet方法调用本机方法来执行赋值.主要有两个问题:

  1. 无限循环如何帮助?
  2. 可能是什么情况,"if(compareAndSet(current,next))"条件可能返回false?在这种情况下,代码可能会遇到无限循环.如果保证compareAndSet将始终返回"true",那么我们是否可以完全取消此检查?

类似的质疑是与decrementAndGet,getAndDecrement,getAndAdd方法为好.

java synchronization atomic java-6

4
推荐指数
1
解决办法
1368
查看次数

用Java 8 JDK编译java 6安装

我需要使用Java 6为大学编译我的源代码.我目前在我的PC(Linux)上安装了Java 8 JDK.如何在Java 6中编译?

ps我明白我将无法使用任何Java 7或8功能.

pps我意识到java 6源代码将使用Java 8 JDK编译好但是我发现在家里编译时我不小心在我的程序中使用了后Java 6功能.当我尝试在uni的实验室计算机上编译源代码时,我遇到了一堆错误.例如,无法将对象转换为基元.

java linux compiler-version java-6 java-8

4
推荐指数
2
解决办法
6220
查看次数

在Java中并行或异步下载多个文件

在这里,我试图一个接一个地下载多个文件:

环境-Java 1.6

public List<Attachment> download(List<Attachment> attachments)
{
  for(Attachment attachment : attachments) {
    attachment.setDownStatus("Failed");
    String destLocation = "C:\Users\attachments";
    try {
        String attUrl = attachment.getUrl();
        String fileName = attachment.getFileName();            
        URL url = new URL(attUrl);
        File fileLocation = new File(destLoc, fileName);
        FileUtils.copyURLToFile(url, fileLocation);
        if(fileLocation.exists()) {
           attachment.setDownStatus("Completed");
         }
       } catch(Exception e) {
          attachment.setDownStatus("Failed");
       } finally {
          attachment.setDestLocation(destLocation);
       }
   }
  return attachments;
}
Run Code Online (Sandbox Code Playgroud)

我正在从提供的URL(http://cdn.octafinance.com/wp-content/uploads/2015/07/google-hummingbird.jpg)下载文件。

FileUtils.copyURLToFile(url, fileLocation);
Run Code Online (Sandbox Code Playgroud)

上面的代码完美地完成了下载工作,没有任何问题。

我的问题:
如果附件列表更多,则将花费更多时间,因此我想使其成为异步或并行过程,而不是顺序下载。

java multithreading asynchronous file java-6

4
推荐指数
2
解决办法
3250
查看次数

验证Java 6上的Hijri日期(伊斯兰日历)

我想验证Hijri日期.在我的应用程序中,Hijri日期将以格式化dd/MM/YYYY.我想在Joda Time API中验证日期是否有效.

例如,我有日期:

String date = "30/02/1403";
String Pattern = "dd/MM/YYYY";
Run Code Online (Sandbox Code Playgroud)

你能帮我验证Hijri约会吗?

我的限制是:

  • 我想在Java 6中验证.我不能在Java 8中使用.
  • 我必须验证伊斯兰历法.用Hijri日期验证.我的日期已经是Hijri格式.我必须验证日期是否与伊斯兰日历有效.
  • 在伊斯兰历法中,30/02/1403是第2个月的有效日期.

java validation jodatime java-6 hijri

4
推荐指数
1
解决办法
449
查看次数