相关疑难解决方法(0)

Android 什么时候用 AsyncTask 什么时候用 Thread

何时使用AsyncTask和何时使用Thread两者都在后台工作,并且都可以UI Thread通过某种机制操纵控件。

multithreading android android-asynctask

5
推荐指数
1
解决办法
6777
查看次数

一种优雅的说法,如果不为空,那么在 Java 6 中使用这个 setter 方法?

我正在为工作场所中的某些 json 数据编写自定义反序列化器,我必须通过 setter 方法设置许多值,并且我只想在它们不为空时才这样做。

我可以通过将 setter 函数作为参数传递给另一个方法来在 Java 中执行此操作吗?

即伪代码:

private void setValue(Func setterMethod, <T> value){
    if (value != null){
        setterMethod(value);
    }
}
Run Code Online (Sandbox Code Playgroud)

java

4
推荐指数
2
解决办法
2256
查看次数

将语句传递给方法

我知道如何将参数传递给方法 - 您将类/基元名称放在方法标头中,并在调用所述方法时替换该类型的值。是否可以将一系列语句传递给方法(在java中),类似于传递变量的方式?例如,诸如此类的东西:

repeat(5) {
    System.out.println("Hello");
}
...
private void repeat(int arg, {} statements) {
    for (int x = 0; x < arg; x++) {
        statements;
    }
}
Run Code Online (Sandbox Code Playgroud)

这里所需的输出是打印“Hello”5 次。

显然语法不正确,但这有可能吗?

java

4
推荐指数
1
解决办法
505
查看次数

Java:像在 JavaScript 中一样将函数作为参数传递?

我正在尝试编写一个函数,因此我可以将函数作为参数传递,例如

public class HashFunction {
    private Function f;
    public HashFunction(Function f) {
        this.f=f;
    }
    public Integer hash(String s){
        return f(s);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我可以写代码

new HashFunction(function(String s){ return s.charAt(0)+0; });
Run Code Online (Sandbox Code Playgroud)

就像在 javascript 中一样。我怎样才能做到这一点?

java

3
推荐指数
1
解决办法
1808
查看次数

Java - 如何将方法作为参数传递?

我有一个重复使用的代码节.这是两个例子:

public java.sql.Struct createStruct(String typeName, Object[] attributes) {
  String searchPath = getSearchPath();
  String name = setSearchPathToSchema(typeName);
  Struct ret = delegate().createStruct(name.toLowerCase(), attributes);
  setSearchPath(searchPath);
  return ret;
}

public java.sql.Array createArray(String typeName, Object[] elements) {
  String searchPath = getSearchPath();
  String name = setSearchPathToSchema(typeName);
  Array ret = delegate().createArray(name.toLowerCase(), elements);
  setSearchPath(searchPath);
  return ret;
}
Run Code Online (Sandbox Code Playgroud)

您可以看到这两种方法具有一般形式:

public <T> createXXX(String typeName, Object[] objects) {
  String searchPath = getSearchPath();
  String name = setSearchPathToSchema(typeName);
  T ret = delegate().createXXX(name.toLowerCase(), objects);
  setSearchPath(searchPath);
  return ret;
}
Run Code Online (Sandbox Code Playgroud)

具有共同签名但返回类型不同T的某些函数集的返回类型在哪里createXXX.

我非常确定如何在Javascript,F#,C#,Scala或任何其他语言中执行此操作. …

java lambda

3
推荐指数
1
解决办法
4532
查看次数

Java - 作为参数的函数

我阅读了关于将函数作为参数传递的下一个答案.

不过,我不明白这个想法.我的函数可以得到任何函数:sin(x),cos(x)等.

据我所知,我可以创建一个界面,例如:

public interface functionI<T> {

}
Run Code Online (Sandbox Code Playgroud)

这将包装它.

现在我有我的功能:

    public void needToDo(functionI<Integer> a, int x0Par, int hPar){
}
Run Code Online (Sandbox Code Playgroud)

(needToDo,例如,需要替换函数n x0par和hPar的x,并找到Max.如果我得到sin(x),我需要找到sin(x0Par)和(sin(hPar))的最大值.

我不明白我在我的功能中如何使用它.当我得到函数时,我怎么知道该怎么做,可以是任何东西(多项式,sin(x)等)

java

2
推荐指数
1
解决办法
2527
查看次数

java中函数指针的最重要的事情是什么?

可能重复:
Java中函数指针的最接近的替代是什么?

我只是有一种情况,如果你可以在c或c ++中使用类似于函数指针的功能,那就太好了.我能想到的最好的事情是组合Runnables并在不同的线程中启动它们.建议?

java function-pointers

1
推荐指数
1
解决办法
2万
查看次数

如何在java中将成员函数作为参数传递?

我的collect()函数调用Foo.f().我想让Foo.f()自己成为我的功能参数.这在Java中可行吗?

  • 我如何将其中任何一个Foo.f()Foo.g()(或任何其他函数Foo返回a String)传递给我的函数?
  • 是否存在已经存在的函数,该函数遍历集合并收集调用每个集合项的方法的结果?

.

class Foo {
    public String f() { return "f"; }
    public String g() { return "g"; }
    // ...
}

public List<String> collect(List<Foo> foos)
{
    List<String> result = new ArrayList<String>();

    for (final Foo foo: foos) {
        result.add(foo.f());  // I want Foo.f to be a parameter
    }

    return result;
}
Run Code Online (Sandbox Code Playgroud)

更新

我想指出的事实是,我不只是调用相同的函数,而是调用集合中f所有项的成员函数List<Foo>.

java

1
推荐指数
2
解决办法
1万
查看次数