草庐IT

表达力

全部标签

java - 在 Spring 表达式语言 (SpEL) 中评估属性

我们的服务有一个根据属性文件调度的进程,读取属性refreshIntervalMillis。它的值直接注入(inject)到具有此配置的Quartz触发器中:...但是,安装此服务的管理员以小时/天为单位进行思考,因此为了让他们更轻松,我们将其更改为:将refreshIntervalMillis重命名为refreshIntervalMinutes将上面的代码更改为以下内容:p:repeatInterval="#{1000*60*T(java.lang.Integer).valueOf(@configurationProperties['garbageLevelWatcher.refre

java - 枚举中的常量表达式

有什么方法可以将枚举转换为常量表达式吗?我希望我的switch运算符在枚举的值中进行选择,但是我得到一个编译错误“case表达式必须是常量表达式”,所以我尝试在变量中声明它:finalintREG=MyEnum.REG.getIndex().intValue();switch(service.getIndex()){caseREG:但我仍然得到同样的错误。根据Oracle的文档http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.28Acompile-timeconstantexpressionisane

java - Java 8 Lambda 表达式的 Groovy 等价物

我只用一种方法得到了这个Java接口(interface)。//JavaInterfacepublicinterfaceAuditorAware{AuditorgetCurrentAuditor();}我使用Java8Lambda表达式创建AuditorAware的实例,如下所示。//Java8LambdatocreateinstanceofAuditorAwarepublicAuditorAwarecurrentAuditor(){return()->AuditorContextHolder.getAuditor();}我正在尝试在Groovy中编写上述Java实现。我看到有很多方法

java - 使用 Mockito,我如何验证我的 lambda 表达式被调用了?

我正在尝试测试采用Consumer函数的方法,并且我想使用Mockito验证我的lambda表达式被调用了一次。我现在使用的是在最终的单元素数组上使用标志的笨拙方法:finalboolean[]handlerExecuted={false};instance.conditionalRun(item->{handlerExecuted[0]=true;item.foo();});Assert.assertTrue("Handlershouldbeexecuted.",handlerExecuted[0]);似乎应该有更好的方法(也许使用Mockitospy)来验证此lambda表达式是否

java - 如何在 Java 1.7 中编写等效的 lambda 表达式?

我在Java1.8中有以下代码。solver.plugMonitor((IMonitorSolution)()->solution.record(solver));如何在没有lambda的情况下将其转换为Java1.7代码? 最佳答案 plugMonitor方法需要一个类型为IMonitorSolution的参数,以及一些没有参数的方法YMethod:solver.plugMonitor(newIMonitorSolution(){publicvoidYMethod(){solution.record(solver);}});感谢@

java - spring-data-jpa: ORA-01795: 列表中表达式的最大数量为 1000

我正在使用SpringDataJPA。我想从ListclientIdList获取client.id的交易.问题是我传递了一个非常大的列表,然后返回了一个ORA-01795错误。@Query(value="SELECTTransactRepViewModelFROMTransactRepViewModelaWHEREa.clientIdIN(?1)ANDa.clDateBETWEEN?2and?3",nativeQuery=true)ListfindByClientIdList(ListclientIdList,DatestartDate,DateendDate)throwsDataAc

Java Lambda 表达式和日志记录

我正在阅读Log4j2的新功能,并且有一个功能可以启用“Java8lambda支持惰性日志记录”给出了两个例子第一个是不好的做法//pre-Java8styleoptimization:explicitlychecktheloglevel//tomakesuretheexpensiveOperation()methodisonlycalledifnecessaryif(logger.isTraceEnabled()){logger.trace("Somelong-runningoperationreturned{}",expensiveOperation());}第二个是好的做法//J

java - lambda 表达式中的 Else 子句

我使用以下lambda表达式迭代PDF文件。publicstaticvoidrun(Stringarg){PathrootDir=Paths.get(arg);PathMatchermatcher=FileSystems.getDefault().getPathMatcher("glob:**.pdf");Files.walk(rootDir).filter(matcher::matches).forEach(Start::modify);}privatestaticvoidmodify(Pathp){System.out.println(p.toString());}这部分.forE

java - hibernate 条件中的表达式

假设我有一个带有数量字段和价格字段的持久类Item。有没有办法建立一个计算数量*价格总和的条件? 最佳答案 我认为您也可以使用SQL投影。它应该是这样的:session.createCriteria(Item.class).createAlias("item","i").setProjection(Projections.projectionList().add(Projections.groupProperty("i.id")).add(Projections.groupProperty("i.price")).add(Proje

java - 比较数学表达式

这是我的情况:我有两个包含变量(x、y、z等)的数学表达式。我已经使用shuntingyardalgorithm将它们编译为后缀用于执行,现在我需要一种方法来测试它们在数学上是否相等。例子:x+5==5+xx*2==x+x4/(x/2)==8/x我最初的想法是只抛出几千个不同的随机输入,看看评估结果是否相同。我预见到这种方法的问题:精度问题、NaN情况和可能的溢出。所有的计算都是用Java的double类型完成的。有什么想法吗?:)编辑:由于这是一款休闲游戏,解决方案不需要完美,只要足够好即可! 最佳答案 对于您提供的示例表达式,您