等价于Java中C++的std::bind吗? - java

有没有办法像Java中的std::bind一样将参数参数绑定到Java中的函数指针? Java相当于这样的东西是什么?

void PrintStringInt(const char * s, int n)
{
    std::cout << s << ", " << n << std::endl;
}

void PrintStringString(const char * s, const char * s2)
{
    std::cout << s << ", " << s2 << std::endl;
}

int main()
{
    std::vector<std::function<void(const char *)>> funcs;
    funcs.push_back(std::bind(&PrintStringInt, std::placeholders::_1, 4));
    funcs.push_back(std::bind(&PrintStringString, std::placeholders::_1, "bar"));
    for(auto i = funcs.begin(); i != funcs.end(); ++i){
        (*i)("foo");
    }
    return 0;
}

参考方案

这与我认为可以逐行进行翻译非常接近,bind不会将1:1映射到任何Java构造。

static void PrintStringInt(String s, int n)
{
    System.out.println(s + ", " + n);
}

static void PrintStringString(String s, String s2)
{
    System.out.println(s + ", " + s2);
}

interface MyCall {
    void fn(String value);
}

public static void main(String[] argv)
{
    Vector<MyCall> funcs = new Vector<MyCall>();
    funcs.add(new MyCall() { 
      @Override public void fn(String value) {PrintStringInt(value, 4); }});
    funcs.add(new MyCall() { 
      @Override public void fn(String value) {PrintStringString(value, "bar"); }});
    for(MyCall i : funcs){
        i.fn("foo");
    }
}

在Java中,执行“ ++++++++”表达式,编译器未报告任何错误并且可以正确执行? - java

我用eclipse编写了这段代码,用war写过,结果为3d。public static void main(String[] args) { double a = 5d + + + + + +-+3d; System.out.println(a); } 参考方案 您的表情可以改写为(5d) + (+ + + + +-+3d) 其中第一个+是应用于两个操作数的…

Java和C++共享内存 - java

我有一段创建共享内存的C++代码。是否可以编写Java代码来读取C++代码创建的内存,除非使用JNI。顺便说一句,我正在使用Windows操作系统。 参考方案 请参见MappedByteBuffer。这是读写共享内存的标准Java类。我经常使用。是的,您可以使用它与使用共享内存以任何语言编写的任何程序进行通信,并且这都是非常标准的Java,没有JNI。

Java值加变量++ - java

考虑以下代码int val1 = 3; val1++; int val2 = val1++; System.out.println(val1); System.out.println(val2); Val1值= 5;Val2值= 4;为什么Val1的值是“ 5”?据我了解,应该为4,因为:在第1行,它的赋值为3,在第2行,通过val1 ++加上1,结果val…

我可以使用JNI在Java代码中引用C++对象吗? - java

我在任何地方都没有看到(或者也许我很简单,没有看到它),但是有没有办法使用JNI返回c / c ++对象并在Java中使用该对象?例如(非常简单):class simpleClass{ ... private: int intVar; public: int getIntVar(); void setIntVar(int someNum); ... } 在我…

为什么C++中的void方法可以返回void值,而在其他语言中却不能呢? - java

该程序可以用C ++编译并运行,但不能使用多种不同的语言,例如Java和C#。#include <iostream> using namespace std; void foo2() { cout << "foo 2.\n"; } void foo() { return foo2(); } int main() {…