我有基类Foo与方法垃圾邮件和类Bar,它覆盖垃圾邮件.我需要在一些就地定义的回调对象的方法中调用基类的垃圾邮件:
public class Foo {
public void spam() {
// ...
}
}
public class Bar extends Foo {
@Override
public void spam() {
objectWhichRequireCallback(new Callback {
@Override
public void onCallback() {
super.spam();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
此代码无效,因为super与Callback相关,而不是Bar类.是否可以从就地定义的对象调用super方法?
我试图使用SSE2计算两个4d浮点矢量之间的平方欧几里德距离.我的操作系统是Mac OS X 10.7 Lion.
当我在XCode 4.5.2中使用Apple LLVM编译器时,一切都很好.但是当我在项目设置中切换到GCC 4.2时,我在_mm_mul_ps操作时出现错误EXC_BAD_ACCESS .
当我从命令行(g ++ main.cpp)编译代码而没有其他参数时,我有"分段错误".但是当我启用除O0之外的任何优化级别(O1,O2,O3,Os)时,一切正常.
我无法在使用GCC 4.6.3的Ubuntu 12.04上重现此问题.
#include <stdio.h>
#include <emmintrin.h>
typedef float SPPixel[4];
float sp_squared_color_diff(const SPPixel px1, const SPPixel px2) {
SPPixel d;
__m128 sse_px1 = _mm_load_ps(px1);
__m128 sse_px2 = _mm_load_ps(px2);
sse_px1 = _mm_sub_ps(sse_px1, sse_px2);
sse_px2 = _mm_mul_ps(sse_px1, sse_px1); // EXC_BAD_ACCESS
_mm_store_ps(d, sse_px2);
return d[0] + d[1] + d[2] + d[3];
}
int main(int argc, const char * argv[]) {
SPPixel a __attribute__ ((aligned (16))) = …Run Code Online (Sandbox Code Playgroud) 我有两个类(A和B)具有相同的方法(foo):
public class A {
public String foo() {
return "A said foo";
}
}
public class B {
public String foo() {
return "B said foo";
}
}
Run Code Online (Sandbox Code Playgroud)
我想创建可以调用此方法的泛型类.但是我有两个想法如何在运行时执行此操作并且没有关于编译时间的想法:
检查类型并转换为A或B.
获取方法.
我调用getMethod的泛型示例:
public class Template<T> {
private T mT;
public Template(T t) {
mT = t;
}
public String bar() {
String result = "no result";
try {
Method m = mT.getClass().getMethod("foo", null);
result = (String)m.invoke(mT);
} catch (Exception e) {
result = e.toString();
e.printStackTrace();
}
return result;
} …Run Code Online (Sandbox Code Playgroud) java ×2
callback ×1
debugging ×1
gcc ×1
generics ×1
optimization ×1
overriding ×1
sse ×1
super ×1