官术网_书友最值得收藏!

Passing inferred variables to a method

Though the use of var is limited to the declaration of local variables, these variables (both primitive and reference) can be passed to methods as values. The inferred types and the types expected by the methods must match, to allow the code to compile.

In the following example code, the Child class implements the MarathonRunner interface. The start() method in the Marathon class expects the MarathonRunner object (the instances of the class implementing this interface) as its method argument. The inferred type of the aRunner variable is Child. Since the Child class implements MarathonRunner, aRunner can be passed to the start() method, the inferred type of aRunner (Child) and the expected type of start() (MarathonRunner) match, allowing the code to compile.

The code is as follows:

interface MarathonRunner { 
    default void run() { 
        System.out.println("I'm a marathon runner"); 
    } 
} 
class Child implements MarathonRunner { 
    void whistle() { 
        System.out.println("Child-Whistle"); 
    } 
    void stand() { 
        System.out.println("Child-stand"); 
    } 
} 
class Marathon { 
    public static void main(String[] args) { 
        var aRunner = new Child();         // Inferred type is Child 
        start(aRunner);                    // ok to pass it to method start 
// (param - MarathonRunner) } public static void start(MarathonRunner runner) { runner.run(); } }
As long as the inferred type of a variable matches the type of the method parameter, it can be passed to it as an argument.
主站蜘蛛池模板: 孟津县| 泸州市| 龙里县| 治多县| 元谋县| 泸水县| 涪陵区| 新津县| 泌阳县| 白山市| 宝清县| 婺源县| 明水县| 宁武县| 昭觉县| 普兰店市| 五台县| 余江县| 游戏| 南靖县| 万盛区| 朝阳区| 郎溪县| 贡觉县| 方正县| 灵川县| 中宁县| 朔州市| 赣榆县| 株洲县| 资阳市| 拉萨市| 景洪市| 麻栗坡县| 惠来县| 班戈县| 汉川市| 水富县| 沙田区| 麻江县| 彭州市|