相关疑难解决方法(0)

如何在Java中将函数作为参数传递?

是否可以将方法作为参数传递给Java方法?如果是这样,有人可以指导我吗?这似乎并不重要

java

395
推荐指数
6
解决办法
50万
查看次数

什么是Java中函数指针的最接近的替代品?

我有一个大约十行代码的方法.我想创建更多完全相同的方法,除了一个会改变一行代码的小计算.这是传递函数指针以替换该行的完美应用程序,但Java没有函数指针.什么是我最好的选择?

java closures function-pointers

299
推荐指数
12
解决办法
9万
查看次数

Java代表?

Java语言是否具有委托功能,类似于C#如何支持委托?

java delegates

189
推荐指数
6
解决办法
23万
查看次数

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

可能重复:
Java Pass方法作为参数

是否可以在Java中将方法作为参数传递?如果我不能重复代码,那么下面的方法将是最好的行动方案.

public void enterUserInput(javax.swing.JTextField inputField, javax.swing.JTextField   outputField, method rangeChecking){

    String input;
    double output;
    input = inputField.getText();
    output = Double.parseDouble(input);
    if(rangeChecking(output)){
        outputField.setText(input);
        inputField.setText(null);
    }
Run Code Online (Sandbox Code Playgroud)

我将从不同的类调用rangeChecking方法,每次调用enterUserInput时,rangeChecking方法都会有所不同

java

19
推荐指数
4
解决办法
6万
查看次数

Java传递方法引用作为其他方法的参数

我试图将类A的选定"get"方法传递给B类中的方法.我已经将Java Pass Method作为参数检出,但是我无法以合理的方式采用接口方法解决我的问题.我宁愿使用java 8(lambdas),如果可能的话也要避免反射.我的感觉是,我以错误的方式看待我的问题.以下是我要完成的具体简化示例:

我有一个包含一些字段和get方法的类:

public class DataStore {
    private float a;
    private float b;
    private float c;

    public float getA() {
        return a;
    }

    public float getB() {
        return b;
    }

    public float getC() {
        return c;
    }

}
Run Code Online (Sandbox Code Playgroud)

接下来,我让我的主类实例DataStore化为Map的值,然后访问DataStore的特定字段,如:

public class App {

    public static void main(String[] args) {
        // declare TreeMap using DataStore class as value
        Map<Integer, DataStore> dataMap = new TreeMap<Integer, DataStore>();

        // populate Map with example data
        dataMap.put(2,  new …
Run Code Online (Sandbox Code Playgroud)

java parameters methods

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

Java lambda可以将方法绑定到它们的参数吗?

下面讨论如何使用lambdas将方法作为参数传递:
Java Pass Method as Parameter

在其他语言中,即C++,可以使用Lambdas将函数绑定到它的参数 - 这里讨论:
Bind Vs Lambda?

在Java中,是否可以使用lambdas绑定方法?

如果是这样,你会如何做到这一点?

编辑>>>>

根据要求,我通常尝试做的一个例子:

请注意,这里有伪代码.

public class DataView {

    private static ArrayList<Float> rectData = new ArrayList<Float>();
    private static ArrayList<Float> textData = new ArrayList<Float>();

    DataView(){

        //Pseudo Code:
        boundFunction mybind  = boundFunction(functionA, 5, 10);
        boundFunction mybind2 = boundFunction(functionB, 10, 12);

        iter(mybind);
        iter(mybind2);

    }

    //Method with pseudo parameter
    private void iter(functionSignature){
        for(Float i : textData){

            //Pseudo call to pseudo parameter
            functionSignature();

        }
    }

    private void functionA(int a, int b){ …
Run Code Online (Sandbox Code Playgroud)

java lambda function-pointers function-binding

8
推荐指数
1
解决办法
5927
查看次数

传递应用程序活动方法的命令模式?

在阅读了@RomainGuy 的避免内存泄漏文章后,我意识到我当前的Android应用程序一直困扰着传递应用程序主要活动的错误.所以每当我,我可以简单地用Activity.getApplicationContext()替换该活动参数.

但是我的应用程序中的某些类仍然需要运行只能是应用程序主要活动成员的方法.

因此我想到可能使用命令模式来解决这个限制.

问题是,如果我们看一下这个例子:

public class SomeCommandExecuableOnlyByActivity implements Command 
{
    public void execute(Object data) 
    {
        doIt( ((MyActivity)data).getWindow() );
    }    
}
Run Code Online (Sandbox Code Playgroud)

我再次进入需要传递活动的死胡同(这次伪装成Object数据).

如何摆脱这种"鸡蛋和鸡蛋"的局面?

有没有更好的方法来解决这个问题?

android memory-leaks command-pattern java-memory-model android-activity

7
推荐指数
1
解决办法
2140
查看次数

使用真值表过滤

想象一个带有布尔标志的Person类,该布尔标志指示该人是否可以使用 - 默认情况下设置为false.

public class Person{
    boolean employable = false;
    ...
}
Run Code Online (Sandbox Code Playgroud)

现在假设有一些外部布尔方法作用于Person对象.例如,考虑实用程序类中的静态布尔方法.

public class PersonUtil{
    public static boolean ofWorkingAge(Person p){
        if(p.getAge() > 16) return true;
        return false;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

布尔静态方法本质上类似于布尔值函数,即谓词.

我们可以用谓词构造一个2 ^(#谓词)-by-#谓词真值表.例如,给定三个谓词:ofWorkingAge,ofGoodCharacter,isQualified我们可以构造以下8×3真值表:

T T T
T T F
T F T
T F F
F T T
F T F
F F T
F F F
Run Code Online (Sandbox Code Playgroud)

我们现在想雇用具有理想品质的人.让+表示我们希望考虑某人可就业(即将他们的就业能力标志设为)和-相反.

T T T | + …
Run Code Online (Sandbox Code Playgroud)

java design-patterns functional-programming truthtable java-8

6
推荐指数
1
解决办法
649
查看次数

当我在类的构造函数中声明并初始化它们时,为什么我的字段初始化为null或默认值为零?

这是针对类似问题的规范性问题和答案,其中问题是由阴影引起的.


我在我的类中定义了两个字段,一个是引用类型,另一个是基本类型.在类的构造函数中,我尝试将它们初始化为一些自定义值.

当我稍后查询这些字段的值时,它们返回Java的默认值,null对于引用类型,0表示基元类型.为什么会这样?

这是一个可重复的例子:

public class Sample {
    public static void main(String[] args) throws Exception {
        StringArray array = new StringArray();
        System.out.println(array.getCapacity()); // prints 0
        System.out.println(array.getElements()); // prints null
    }
}

class StringArray {
    private String[] elements;
    private int capacity;
    public StringArray() {
        int capacity = 10;
        String[] elements;
        elements = new String[capacity];
    }
    public int getCapacity() {
        return capacity;
    }
    public String[] getElements() {
        return elements;
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望getCapacity()返回值10并getElements()返回正确初始化的数组实例.

java constructor field

6
推荐指数
1
解决办法
871
查看次数

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

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

multithreading android android-asynctask

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