jaroslav@1673: /** jaroslav@1673: * Back 2 Browser Bytecode Translator jaroslav@1673: * Copyright (C) 2012 Jaroslav Tulach jaroslav@1673: * jaroslav@1673: * This program is free software: you can redistribute it and/or modify jaroslav@1673: * it under the terms of the GNU General Public License as published by jaroslav@1673: * the Free Software Foundation, version 2 of the License. jaroslav@1673: * jaroslav@1673: * This program is distributed in the hope that it will be useful, jaroslav@1673: * but WITHOUT ANY WARRANTY; without even the implied warranty of jaroslav@1673: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the jaroslav@1673: * GNU General Public License for more details. jaroslav@1673: * jaroslav@1673: * You should have received a copy of the GNU General Public License jaroslav@1673: * along with this program. Look for COPYING file in the top folder. jaroslav@1673: * If not, see http://opensource.org/licenses/GPL-2.0. jaroslav@1673: */ jaroslav@1673: package org.apidesign.bck2brwsr.vm8; jaroslav@1673: jaroslav@1673: public interface Defaults { jaroslav@1673: public static int staticValue() { jaroslav@1673: return 42; jaroslav@1673: } jaroslav@1673: jaroslav@1673: public default int value() { jaroslav@1673: return 42; jaroslav@1673: } jaroslav@1673: jaroslav@1687: public static Defaults create(int type) { jaroslav@1673: class X implements Defaults { jaroslav@1673: } jaroslav@1673: class Y implements Defaults { jaroslav@1673: @Override jaroslav@1673: public int value() { jaroslav@1673: return 7; jaroslav@1673: } jaroslav@1673: } jaroslav@1687: class Z implements DoubleDefaults { jaroslav@1687: } jaroslav@1687: switch (type) { jaroslav@1687: case 0: return new X(); jaroslav@1687: case 1: return new Y(); jaroslav@1687: default: return new Z(); jaroslav@1687: } jaroslav@1673: } jaroslav@1673: jaroslav@1673: public static int defaultValue() { jaroslav@1687: return create(0).value(); jaroslav@1673: } jaroslav@1673: jaroslav@1673: public static int myValue() { jaroslav@1687: return create(1).value(); jaroslav@1687: } jaroslav@1687: jaroslav@1687: public static int sndValue() { jaroslav@1687: return create(2).value(); jaroslav@1687: } jaroslav@1687: jaroslav@1687: public interface DoubleDefaults extends Defaults { jaroslav@1687: @Override jaroslav@1687: public default int value() { jaroslav@1687: return 84; jaroslav@1687: } jaroslav@1673: } jaroslav@1673: }