簡體   English   中英

Java:可以調用具有未知參數的函數

[英]Java: possible to call up a function with unknown parameters

從理論上講,如果“sensorFinal”類無法訪問整數“value”,“sensorFinal”類中的“absSensor”函數如何能夠調用“proximitySensor”類中的“proximitySensorAdjusted”函數?

是否有一種標准方法可以調用對數據訪問受限的函數,或者是否有解決方法? 提前致謝!

public class proximitySensor
{
    double adjustment = 5;
    public double proximitySensorAdjusted(int value)
    {
        double finalValue = value + adjustment;
        return finalValue; 
    }
}

public class sensorFinal
{
    public double absSensor()
    {
        proximitySensor sensorValue = new proximitySensor();
        sensorValue.proximitySensorAdjusted( ??? ) 
    }
}

您可以使用方法重載。

public double proximitySensorAdjusted(int value) {
    double finalValue;
    if(value == -1) {
        finalValue = adjustment;
    } else {
        finalValue = value + adjustment;
    }
    return finalValue;
}

public double proximitySensorAdjusted() {
    return proximitySensorAdjusted(-1); //call with some default value
}

現在您可以調用sensorValue.proximitySensorAdjusted(); .

而不是??? 您需要指定任何整數值,例如05 在您的示例中, int value是一個參數名稱。 只有該函數內的代碼才能訪問它。

您可以使用選項,這與簡單地重載您的函數沒有什么不同,正如這里建議的另一個答案。

public class proximitySensor {

    double adjustment = 5;
    public double proximitySensorAdjusted(Optional<Integer> value) {

        double finalValue = value.map(v -> v + adjustment)
                                 .orElseGet(() -> {

            ... // Do something intelligent here
        });
        return finalValue; 
    }
}

現在您使用以下命令調用該函數:

sensorValue.proximitySensorAdjusted(Optional.empty());

作為旁注,Java 中類名的命名約定是Capitalized ,因此您的proximitySensor ProximitySensor類應稱為ProximitySensor

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM