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

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.
主站蜘蛛池模板: 云梦县| 富顺县| 巩留县| 威宁| 建平县| 承德县| 开化县| 迭部县| 云南省| 侯马市| 加查县| 得荣县| 山西省| 康定县| 新干县| 喀喇| 嘉鱼县| 宁夏| 灵宝市| 西乌珠穆沁旗| 屏东市| 大新县| 大同市| 慈利县| 泰安市| 台北县| 桦甸市| 穆棱市| 商河县| 万宁市| 石嘴山市| 沧州市| 崇文区| 讷河市| 沈丘县| 钟祥市| 梓潼县| 泸定县| 永善县| 罗源县| 界首市|