Java: возможно вызвать функцию с неизвестными параметрами - PullRequest
0 голосов
/ 05 ноября 2018

в теоретическом представлении, как функция «absSensor» в классе «sensorFinal» сможет вызывать функцию «бесконтактный_сенсор» в классе «бесконтактный датчик», ЕСЛИ у класса «датчикФинал» нет доступа к целочисленному значению » «?

Существует ли стандартный способ вызова функций, при котором доступ к данным ограничен или существует обходной путь? Заранее спасибо!

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( ??? ) 
    }
}

Ответы [ 3 ]

0 голосов
/ 05 ноября 2018

Вы можете использовать метод перегрузки.

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();.

0 голосов
/ 05 ноября 2018

Вы можете использовать дополнительные функции, которые на самом деле ничем не отличаются от простой перегрузки вашей функции, как здесь предлагается другой ответ.

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.

0 голосов
/ 05 ноября 2018

Вместо ??? необходимо указать любое целое значение, например 0 или 5. В вашем примере int value является именем аргумента. Только код внутри этой функции имеет к ней доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...