15d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao/*
25d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Copyright (C) 2007 The Android Open Source Project
35d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao *
45d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Licensed under the Apache License, Version 2.0 (the "License");
55d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * you may not use this file except in compliance with the License.
65d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * You may obtain a copy of the License at
75d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao *
85d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao *      http://www.apache.org/licenses/LICENSE-2.0
95d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao *
105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Unless required by applicable law or agreed to in writing, software
115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * distributed under the License is distributed on an "AS IS" BASIS,
125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * See the License for the specific language governing permissions and
145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * limitations under the License.
155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao */
165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoimport java.lang.reflect.Method;
185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao/**
205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Test insertion of an abstract method in a superclass.
215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao */
225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaopublic class ConcreteSub extends AbstractBase {
235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    private static void callBase(AbstractBase abs) {
245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("calling abs.doStuff()");
255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        abs.doStuff();
265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    public static void main() {
295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        ConcreteSub sub = new ConcreteSub();
305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        try {
325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            callBase(sub);
335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        } catch (AbstractMethodError ame) {
345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            System.out.println("Got expected exception from abs.doStuff().");
355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        /*
385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao         * Check reflection stuff.
395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao         */
405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Class absClass = AbstractBase.class;
415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        Method meth;
425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("class modifiers=" + absClass.getModifiers());
445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao
455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        try {
465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            meth = absClass.getMethod("redefineMe", (Class[]) null);
475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        } catch (NoSuchMethodException nsme) {
485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            nsme.printStackTrace();
495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao            return;
505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        }
515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao        System.out.println("meth modifiers=" + meth.getModifiers());
525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao    }
535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao}
54