Eclipse Java Debug模式的变量视图允许检查变量的值.我经常缺少的是检查方法的返回值:如果这样的返回值没有存储到变量中,而是立即用于调用其中一个方法,那么它在调试器中是不可见的.
例如,考虑foo.getBar().equals("xxx");在那里getBar()产生一个字符串.如果来源foo不可用,getBar()在调用之前如何检查结果.equals()?当然,可以通过引入保存结果的局部变量来更改代码.但总的来说这太不切实际了.
Eclipse Standard/SDK
版本:Luna Service Release 1(4.4.1)Build id:20140925-1800
ArrayUtils.isNotEmpty()Apache Commons Lang中的javadoc 似乎是错误的.或者,至少是误导性的.它说
返回:如果数组不为空或不为null,则返回true
根据我的理解,空数组不是null.所以,根据上面的定义,isNotEmpty()应该返回true一个空数组,这是违反直觉的.
岂不
返回:如果数组不为null且不为空,则返回true
更正确吗?
对不起,这个基本的ABAP问题.在ABAP中调用方法的不同方法有哪些?他们的"官方"名字是什么?我听说过执行,方法调用和内部/内联方法调用.
我猜,Perform使用PERFORM关键字和方法调用CALL METHOD语法.但什么是"内部"或"内联方法调用"?
如何添加YAML指向例如另一个网站的文件的链接?描述字段没问题.
我阅读了YAML文档,但找不到"外部引用"的引用.
考虑以下两组方法.第一个被接受,第二个被拒绝为含糊不清.唯一的区别是使用int和Integer.
是否特别需要拒绝第二个?这意味着在拳击之后接受它(这将导致第一组)有一个问题.我在这里想念什么?
从我的角度来看,Java编译器在这里太局限了.
第1组:
public void test(Object... values) {}
public void test(Integer x, Object... values) {} // difference here
public void b() {
test(1, "y"); // accepted
}
Run Code Online (Sandbox Code Playgroud)
第2集:
public void test(Object... values) {}
public void test(int x, Object... values) {} // difference here
public void b() {
test(1, "y"); // marked as ambiguous
}
Run Code Online (Sandbox Code Playgroud)
Set 2产生编译器错误:
error: reference to test is ambiguous
test(1, "y"); // marked as ambiguous
^
both method test(Object...) in T and method test(int,Object...) in T …Run Code Online (Sandbox Code Playgroud) 我们有一个包含许多实例的类,并遇到内存问题.因此,我们尝试减少这个类的内存需求.一个想法是以下.
该类有许多布尔实例变量,每个变量在初始实现中占用一个单词.可以想到将它们组合到存储在int中的迷你位向量,使得它们的组合存储器要求将是一个字.
但我怀疑Java VM正在进行这种优化,因此手动执行它不会获得任何额外的节省.对?
我们正在编写一个用Java解析和转换ABAP代码的工具.因此,我们无意编写新的ABAP代码,但我们的工具必须处理所有ABAP,甚至是过时的语句.此外,我不是ABAP专家.
我们看到的一个对象使用begin_of_block在object中定义的宏RFDBRMAC.如果使用逻辑数据库,BRF则加载包含; 使用另一个逻辑数据库以及根本没有逻辑数据库将不会加载它.但它的相应对象SAPDBBRF和其中都没有包括提及RFDBRMAC.特别是,前者都不包括后者.
如何将逻辑数据库分配给BRF程序使其包含RFDBRMAC?
在 Windows 7 上,我尝试通过执行命令从 Java 进程获取堆栈跟踪
jstack.exe -F xxx
来自另一个 Java 进程,其中 xxx 是目标进程的 PID。我收到错误
附加到进程时出错:Windbg 错误:WaitForEvent 失败!
知道为什么吗?
我们有一个基于 Eclipse(主类实现IApplication)的 Java 应用程序,它是从 Windows 命令行启动的。它的输出System.out不可见/打印到启动它的命令窗口中。然而,当将输出通过管道传输到 时more,输出很好。怎么来的?
例如,考虑helloworld.exe. C:\>helloworld.exe在命令窗口中运行时,应用程序只是返回。但是在运行时C:\>helloworld.exe | more,屏幕显示
C:>helloworld.exe | 更多的
你好,世界
C:>
在 linux 上,输出很好。如何在 Windows 上查看输出?
一些要求的信息:
System.out.prinln("xxx");1.8.0_60,Eclipse3.6.2>std.txt 2>err.txt表明输出确实在标准输出上。 该.ini文件内容如下
--launcher.suppressErrors
-vmargs
-Xms256m
-Xmx4096m
-Djava.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory
-Djava.library.path=plugins
Run Code Online (Sandbox Code Playgroud)
也许这个问题是相关的?
ABAP 是否有明确的评估顺序?例如,在表达式 中,是否可以保证首先评估/执行foo( ) + bar( )哪个方法foo( )和?bar( )在 ABAP 关键字文档中找不到此类信息。
我对ABAP中术语'静态'和'动态'wrt CALL方法的含义有点困惑.
一方面,static指的是可以在没有实例的情况下访问的类的组件.动态是指在运行时通过字段内容进行访问.
那么,(class)=>(meth)是静态方法的动态调用吗?!
那么反过来的术语是什么?
dynamic的一个含义是:(meth_name)meth_name需要一个类似字符的字段,该字段在执行语句时必须包含方法的名称.因此,oref->meth是静态方法调用
一个静态组件类的补偿可以使用名称进行访问class=>comp.这里,组件可以是一种方法
我尝试CALL METHOD在 7.40 系统上演示带有动态方法名称的语句。我使用以下测试代码并在第 27 行得到 ABAP 运行时错误。 异常状态描述中的错误分析... in the class LCL, the method "m" could not be found. 但是独立方法调用成功调用m.
REPORT ZUTEST10.
CLASS lcl DEFINITION.
PUBLIC SECTION.
METHODS m.
ENDCLASS.
CLASS lcl IMPLEMENTATION.
METHOD m.
write / 'success'.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA oref TYPE REF TO lcl.
CREATE OBJECT oref.
oref->m( ). " works fine
DATA name TYPE c VALUE 'm'.
CALL METHOD oref->(name). " <-- Runtime Error
Run Code Online (Sandbox Code Playgroud) 我在 7.40 系统上并尝试在接口中演示默认方法。为此,我将ABAP 关键字文档的示例代码复制到报告中。最小代码:
INTERFACE intf.
CLASS-METHODS m1 DEFAULT FAIL.
METHODS m2 DEFAULT IGNORE
RETURNING VALUE(r) TYPE i.
ENDINTERFACE.
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,这给出了语法错误
无法解释“默认”。可能的错误原因:拼写错误或逗号错误`。
我还尝试将接口定义为基于源代码视图的全局接口,但结果相同。基于表单的视图似乎没有提供default选项。
如何做对?