rt/vm8/src/test/java/org/apidesign/bck2brwsr/vm8/Defaults.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Sun, 17 Aug 2014 19:58:05 +0200
branchjdk8
changeset 1673 2d3d0b72af04
child 1687 baa80d712c77
permissions -rw-r--r--
1st implementation of interface extender methods
jaroslav@1673
     1
/**
jaroslav@1673
     2
 * Back 2 Browser Bytecode Translator
jaroslav@1673
     3
 * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
jaroslav@1673
     4
 *
jaroslav@1673
     5
 * This program is free software: you can redistribute it and/or modify
jaroslav@1673
     6
 * it under the terms of the GNU General Public License as published by
jaroslav@1673
     7
 * the Free Software Foundation, version 2 of the License.
jaroslav@1673
     8
 *
jaroslav@1673
     9
 * This program is distributed in the hope that it will be useful,
jaroslav@1673
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
jaroslav@1673
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
jaroslav@1673
    12
 * GNU General Public License for more details.
jaroslav@1673
    13
 *
jaroslav@1673
    14
 * You should have received a copy of the GNU General Public License
jaroslav@1673
    15
 * along with this program. Look for COPYING file in the top folder.
jaroslav@1673
    16
 * If not, see http://opensource.org/licenses/GPL-2.0.
jaroslav@1673
    17
 */
jaroslav@1673
    18
package org.apidesign.bck2brwsr.vm8;
jaroslav@1673
    19
jaroslav@1673
    20
public interface Defaults {
jaroslav@1673
    21
    public static int staticValue() {
jaroslav@1673
    22
        return 42;
jaroslav@1673
    23
    }
jaroslav@1673
    24
    
jaroslav@1673
    25
    public default int value() {
jaroslav@1673
    26
        return 42;
jaroslav@1673
    27
    }
jaroslav@1673
    28
    
jaroslav@1673
    29
    public static Defaults create(boolean overriden) {
jaroslav@1673
    30
        class X implements Defaults {
jaroslav@1673
    31
        }
jaroslav@1673
    32
        class Y implements Defaults {
jaroslav@1673
    33
            @Override
jaroslav@1673
    34
            public int value() {
jaroslav@1673
    35
                return 7;
jaroslav@1673
    36
            }
jaroslav@1673
    37
        }
jaroslav@1673
    38
        return overriden ? new Y() : new X();
jaroslav@1673
    39
    }
jaroslav@1673
    40
    
jaroslav@1673
    41
    public static int defaultValue() {
jaroslav@1673
    42
        return create(false).value();
jaroslav@1673
    43
    }
jaroslav@1673
    44
    
jaroslav@1673
    45
    public static int myValue() {
jaroslav@1673
    46
        return create(true).value();
jaroslav@1673
    47
    }
jaroslav@1673
    48
}