草庐IT

表达力

全部标签

java - 将回调转换为 Java 8 Lambda 表达式

在我当前的项目中,我正在开发一个包含TreeTableView的相当简单的JavaFXGUI。要初始化View,我有以下代码。cmdNrColumn.setCellFactory(newCallback,TreeTableCell>(){@OverridepublicTreeTableCellcall(finalTreeTableColumnp){returnnewTreeTableCell(){@OverrideprotectedvoidupdateItem(Commanditem,booleanempty){super.updateItem(item,empty);TreeTabl

java - 使用 Java 的递归表达式求值器

我打算写一个只做加法和减法的表达式求值器。我有一个简单的算法来做到这一点;但是,我有一些实现问题。我认为表达式是(它是一个字符串)"("")"这是我的算法Stringevaluate(Stringexpression)ifexpressionisdigitreturnexpressionelseifexpressionis"("")"cutthebracketsoutofitexpression1=evaluate()operator=expression2=evaluate()ifoperatoris+expression1+expression2elseifoperatoris-e

java - JSF 和表达式语言 : Bind property only when it exists

将数据列绑定(bind)到数据源中可能存在或不存在的属性的最佳方法是什么?例如,当您有一个类层次结构时,其中一些child可能属于具有该属性的子类型,就会发生这种情况。数据源包含各种子类类型。当某个子类中不存在属性时,总是会产生PropertyNotFoundException。我不想将该属性包含在基类中,因为根据业务规则它不应该存在。你会如何解决这个问题? 最佳答案 在不更改类的情况下,最好的办法是在EL中执行某种instanceof。您可以通过检查Object#getClass()获得的(简单)类名来做到这一点然后Class#g

java - Lambda 'special void-compatibility rule' - 语句表达式

我正在阅读Java8inAction。在3.5.2节中有一段关于“void-compatibilityrule”的内容:Ifalambdahasastatementexpressionasitsbody,it’scompatiblewithafunctiondescriptorthatreturnsvoid(providedtheparameterlistiscompatibletoo).Forexample,bothofthefollowinglinesarelegaleventhoughthemethodaddofaListreturnsabooleanandnotvoidasex

java - Eclipse 可以动态计算表达式吗?

在某些JavaIDE(例如BlueJ和DrJava)中,用户可以打开一个交互窗口,可以在其中输入Java表达式和语句。IDE会快速编译并运行代码,并在必要时显示返回值。在BlueJ中,它称为CodePad。它在本质上类似于DrRacket/DrScheme中的交互面板。Eclipse是否存在类似的东西? 最佳答案 您可能正在寻找Scrapbookpages.这是awrite-up这里是otherSOquestions里面说说吧。 关于java-Eclipse可以动态计算表达式吗?,我们在

Java:如何在不实现接口(interface)的情况下独立评估 EL 表达式(在任何 Web 框架之外)?

我想在我的应用程序中使用EL。但我找不到任何方法。我通常最终需要一些我没有实现的接口(interface)。我有一个对象映射,我想要一个像Hello,${person.name}这样的字符串表达式被评估为一个字符串。我如何使用CommonsEL、javax.el、OGNL等实现这一点?必须是一个独立的库。我知道Java:usingELoutsideJ2EE,并看过JSTL/JSPEL(ExpressionLanguage)inanonJSP(standalone)context.这不是我要找的。我正在寻找的是要添加的依赖项的示例,然后是如何初始化将具有的解析器:privatestati

java - 为什么 Java 8 中的 lambda 表达式要求其内部使用的变量使用 "final"修饰符,但在使用方法引用时却不需要?

这个问题在这里已经有了答案:Whycanmethodreferenceusenon-finalvariables?(4个答案)关闭去年。考虑以下类(class):classFoo{voidhandle(Tt){System.out.println("handling"+t);}publicstaticvoidmain(String[]args){Listlist=newArrayList();list.add(1);list.add(2);Foof=newFoo();list.forEach(f::handle);//compilesfine//list.forEach(obj->f.

java - 通过 lambda 表达式调用 System.out.println()

在C#中,我可以编写以下代码:publicstaticActionWL=x=>Console.WriteLine(x);...然后每次我想向控制台写一些东西时,我只需调用:WL("Someoutput");使用Java8lambda表达式的等效代码是什么?我尝试了以下但它不起作用:staticvoidWL=(Strings)->{System.out.println(s);} 最佳答案 您当前的尝试没有成功,因为您正在尝试声明一个void类型的变量-等效项在C#中也会失败。您需要声明一个合适的功能接口(interface)的变量,就

java - 表达式包含 "at most one side effect, as its outermost operation"是什么意思?

在JavaLanguageSpex15.7:Codeisusuallyclearerwheneachexpressioncontainsatmostonesideeffect,asitsoutermostoperation这是什么意思? 最佳答案 这意味着每个表达式应该一次完成一个任务。考虑以下两个声明:inta=10;intb=20;现在的任务是将这两个int相加并将b递增1。有两种方法可以做到。intc=a+b++;和intc=a+b;b++;JLS更喜欢并推荐后者。 关于java-

java - 比较表达式语言中的字符串和 boolean 值

我有这种行为我不太明白${someVar}${someVar.class.name}${someVar=='error'}输出falsejava.lang.Booleantrue如何解决?为了首先测试两个“事物”是否具有相同的类型然后它们的值是否相同,编写测试的正确方法是什么? 最佳答案 这是在ELspecification中定义的语言行为:A{==,!=,eq,ne}BotherruleselidedIfAorBisBooleancoercebothAandBtoBoolean,applyoperatorCoerceAtoBool