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

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.
主站蜘蛛池模板: 西峡县| 南丹县| 孟连| 安阳县| 巨鹿县| 平罗县| 阿图什市| 富阳市| 织金县| 金乡县| 吕梁市| 万源市| 柘荣县| 石河子市| 安溪县| 繁峙县| 沐川县| 龙江县| 曲水县| 墨江| 海林市| 桓台县| 池州市| 卫辉市| 安阳县| 织金县| 墨竹工卡县| 虹口区| 武安市| 新巴尔虎右旗| 阳西县| 望江县| 万年县| 博爱县| 浙江省| 怀安县| 巴里| 南宁市| 汉源县| 万载县| 霍城县|