如何将TimerTask与lambdas一起使用?

正如您所知,您可以在Java 8中使用lambdas,例如替换匿名方法。 这里可以看到Java 7与Java 8的一个例子: Runnable runnable = new Runnable() { @Override public void run() { checkDirectory(); } }; 在Java 8中可以表示为以下两种方式: Runnable runnable = () -> checkDirectory(); 要么 Runnable runnable = this::checkDirectory; 这是因为Runnable是一个function接口,只有一个(抽象)公共非默认方法。 但是……对于TimerTask我们有以下内容: TimerTask timerTask = new TimerTask() { @Override public void run() { checkDirectory(); } }; 看起来很熟悉吧? 但是使用lambda表达式不起作用,因为TimerTask是一个抽象类,即使它只有一个抽象的公共非默认方法,它也不是一个接口,因此也没有function接口。 它也没有重构为具有默认实现的接口,因为它带有状态,因此无法完成。 所以我的问题 :在构造TimerTask时有没有办法使用lambdas? 我想要的是以下内容: Timer […]

Arrays.asList()有疑问吗?

人们说asList方法将数组转换为列表而不是复制,因此’aList’中的每个更改都会反映为’a’。 因此,在’aList’中添加新值是非法的,因为数组具有固定大小。 但是, asList()方法返回ArrayList 。 编译器如何将第3行与5区分开来。第3行给出了exception( UnsupportedOperationException )。 String[] a = {“a”,”b”,”c”,”d”};//1 List aList = Arrays.asList(a);//2 aList.add(“e”);//3 List b = new ArrayList();//4 b.add(“a”);//5

BigInteger.toString方法正在删除前导0

我正在尝试使用MessageDigest生成MD5总和。 我有以下代码。 byte[] md5sum = digest.digest(); BigInteger bigInt = new BigInteger(1, md5sum); output = bigInt.toString(16); 这不返回32个字符串,而是返回31个字符的字符串8611c0b0832bce5a19ceee626a403a7 预期字符串是08611c0b0832bce5a19ceee626a403a7 输出中缺少前导0。 我尝试了另一种方法 byte[] md5sum = digest.digest(); output = new String(Hex.encodeHex(md5sum)); 输出正如预期的那样。 我检查了doc,Integer.toString根据它进行了转换 使用Character.forDigit提供的数字到字符映射,如果合适,前缀为减号。 并在Character.forDigit方法 如果0 <= digit <radix,则数字参数有效。 有人可以告诉我两种方法有何不同以及为什么前导0被删除?

oracle jdbc中的PreparedStatement和setTimestamp

我在where子句中使用PreparedStatement和Timestamp: PreparedStatement s=c.prepareStatement(“select value,utctimestamp from t where utctimestamp>=? and utctimestamp<?"); s.setTimestamp(1, new Timestamp(1273017600000L)); //2010-05-05 00:00 GMT s.setTimestamp(2, new Timestamp(1273104000000L)); //2010-05-06 00:00 GMT ResultSet rs = s.executeQuery(); if(rs.next()) System.out.println(rs.getInt("value")); 当我在客户端计算机上有不同的时区时,我得到的结果是不同的。 这是Oracle jdbc中的错误吗? 还是纠正行为? Oracle数据库版本是10.2,我已经尝试使用oracle jdbc瘦驱动程序版本10.2和11.1。 参数是Timestamp,我预计在途中不会进行任何时间转换。 数据库列类型是DATE,但我也使用TIMESTAMP列类型检查它,结果相同。 有没有办法达到正确的结果? 我无法将整个应用程序中的默认时区更改为UTC。 谢谢你的帮助

XML Diff和Merge

我想我有一个相当独特的问题需要解决。 好吧,我无法使用谷歌找到足够的信息。 所以在这里, 我从事Java EE SOA应用程序,该应用程序使用Oracle XML DB将XML文档存储为XML。 每当XML发生变化时,我都会增加版本并将以前的版本放到另一个表中。 现在的要求是,我应该将两个版本之间的差异存储为XML,而不是整个XML文档。 有没有可以进行XML比较的Java库? (XMLUnit,……?) 是否有用于捕获XML差异的标准XML模式? 我可以使用哪种转换技术将“差异”应用于XML以在版本之间来回传递? (XSLT,Groovy,……?) 我很感激你的时间。

在Weblogic中部署Spring Boot应用程序

我在webLogic 12C中部署Spring启动应用程序时遇到了麻烦。 10.4.4 403禁止服务器理解请求,但拒绝履行请求。 授权无效,请求不应重复。 如果请求方法不是HEAD并且服务器希望公开为什么请求没有得到满足,那么它应该描述实体中拒绝的原因。 当服务器不希望确切地说明请求被拒绝的原因,或者没有其他响应适用时,通常会使用此状态代码。 我想知道是否有人可以提供帮助。

如何检查Jar文件之间的依赖关系?

我最近采用了用JSF编写的Web系统的支持和编程。 代码有点混乱和冗余,是的,​​没有文档存在。 该系统有超过40个jar库,由于旧版本和测试,其中大多数是冗余的。 要删除一个jar,我必须检查它是否未在代码中导入,因此我在代码中搜索了jar导入路径(我正在使用IntelliJ IDE),确保它没有被使用,并将其删除。 但是,在编译代码之后,测试期间发生了许多运行时错误。 我发现我删除了一些其他现有jar子使用的jar子。 问题是,如何在移除jar之前确保它没有被另一个jar / java类使用? 尽管jar已经编译了类,但编译的类确实具有所需库的导入路径。 但我不能用IntelliJ搜索它们(不在jars文件中搜索)。 我现在做的唯一方法是每次移除一个jar子时测试系统,看看我是否可以崩溃! 由于要测试的function数量巨大,这完全不是一种简单的方法。 我希望有一个工具,我可以提交一些java文件/ jar,它显示它们之间的依赖关系。

Hibernate Criteria和多个join

有可能用Hibernate标准吗? select A.something, B.something, C.something, D.something from A JOIN B on A.id = B.id_fk JOIN C ON B.id = C.id_fk JOIN D ON C.id = D.id_fk;

如何对HashMaps的ArrayList进行排序,每个包含几个键值对?

我需要使用HashMaps的ArrayList调用外部API,每个包含几个预定义的键值对。 一个例子: ArrayList<HashMap> arrayListHashMap = new ArrayList<HashMap>(); { HashMap hashMap = new HashMap(); hashMap.put(“key”, “A key”); hashMap.put(“value”, “B value”); arrayListHashMap.add(hashMap); } { HashMap hashMap = new HashMap(); hashMap.put(“key”, “B key”); hashMap.put(“value”, “A value”); arrayListHashMap.add(hashMap); } 现在我需要对“value”键的内容对此构造进行排序。 这种排序将导致“key = B key / value = A value”条目作为arrayListHashMap中的第一个条目。 任何帮助都非常感谢。 HJW

Java:点击窗口(包括文本/图像)

我想在Java中创建一个透明的覆盖层, 始终在顶部 ,并且我可以点击 。 我发现了一些关于这个问题的类似 post ,但即使在听完他们的答案后,我也遇到了一个问题。 我的问题是让整个窗口点击。 我在使用JFrame时没有任何问题,但是一旦我向它添加任何组件 (JLabel或ImagePanel), 点击属性就不会延续到它们。 因为我想为我的应用程序提供一个背景图像,这基本上使我无法看到每当我单击文本/图像覆盖的区域时窗口如何聚焦的代码。 在我展示我正在使用的代码之前,我首先想要参考这些 线程 , 这些 线程基本上准确地描述了我想要的东西,除了在C#中。 我的目标是创建一个带有透明.png图像的叠加层和一些将在关键事件上更改的文本。 如果它使用JFrame或任何其他库无关紧要。 我只需要它与Windows兼容。 我还想提一下,我有一些Java经验,但是使用JFrame是一个新手。 import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.SwingConstants; import com.sun.jna.platform.WindowUtils; public class Overlay { public static void main(String[] args) { JFrame frame = new JFrame(“Overlay Window”); frame.setUndecorated(true); frame.setAlwaysOnTop(true); frame.getRootPane().putClientProperty(“apple.awt.draggableWindowBackground”, false); frame.setLocation(400, 400); frame.getContentPane().setLayout(new java.awt.BorderLayout()); […]