Q.1

Which constructs an anonymous inner class instance?

  • Runnable r = new Runnable() { };
  • Runnable r = new Runnable(public void run() { });
  • Runnable r = new Runnable { public void run(){}};
  • System.out.println(new Runnable() {public void run() { }});
Q.2

class Foo 
{
    class Bar{ }
}
class Test 
{
    public static void main (String [] args) 
    {
        Foo f = new Foo();
        /* LineMissing statement ? */
    }
}
which statement, inserted at linecreates an instance of Bar?
  • Foo.Bar b = new Foo.Bar();
  • Foo.Bar b = f.new Bar();
  • Bar b = new f.Bar();
  • Bar b = f.new Bar();
Q.3

public class MyOuter 
{
    public static class MyInner 
    {
        public static void foo() { }
    }
}
which statement, if placed in a class other than MyOuter or MyInner, instantiates an instance of the nested class?
  • MyOuter.MyInner m = new MyOuter.MyInner();
  • MyOuter.MyInner mi = new MyInner();
  • MyOuter m = new MyOuter();

    MyOuter.MyInner mi = m.new MyOuter.MyInner();

  • MyInner mi = new MyOuter.MyInner();
Q.4

Which is true about an anonymous inner class?

  • It can extend exactly one class and implement exactly one interface.
  • It can extend exactly one class and can implement multiple interfaces.
  • It can extend exactly one class or implement exactly one interface.
  • It can implement multiple interfaces regardless of whether it also extends a class.
Q.5

What will be the output of the program?

public class Foo 
{
    Foo() 
    {
        System.out.print("foo");
    }
    
class Bar
{
    Bar() 
    {
        System.out.print("bar");
    }
    public void go() 
    {
        System.out.print("hi");
    }
} /* class Bar ends */

    public static void main (String [] args) 
    {
        Foo f = new Foo();
        f.makeBar();
    }
    void makeBar() 
    {
        (new Bar() {}).go();
    }
}/* class Foo ends */
  • Compilation fails.
  • An error occurs at runtime.
  • It prints "foobarhi"
  • It prints "barhi"
Q.6

class Boo 
{
    Boo(String s) { }
    Boo() { }
}
class Bar extends Boo 
{
    Bar() { }
    Bar(String s) {super(s);}
    void zoo() 
    {
    // insert code here
    }
}
which one create an anonymous inner class from within class Bar?
  • Boo f = new Boo(24) { };
  • Boo f = new Bar() { };
  • Bar f = new Boo(String s) { };
  • Boo f = new Boo.Bar(String s) { };
Q.7

What will be the output of the program?

public class HorseTest 
{
    public static void main (String [] args) 
    {
        class Horse 
        {
            public String name; /* Line 7 */
            public Horse(String s) 
            {
                name = s;
            }
        } /* class Horse ends */
        
        Object obj = new Horse("Zippo"); /* Line*/
        Horse h = (Horse) obj; /* Line*/
        System.out.println(h.name);
    }
} /* class HorseTest ends */
  • An exception occurs at runtime at line 10.
  • It prints "Zippo".
  • Compilation fails because of an error on line 7.
  • Compilation fails because of an error on line 13.
Q.8

Which is true about a method-local inner class?

  • It must be marked final.
  • It can be marked abstract.
  • It can be marked public.
  • It can be marked static.
Q.9

What will be the output of the program?

public class TestObj 
{
    public static void main (String [] args) 
    {
        Object o = new Object() /* Line 5 */
        {
            public boolean equals(Object obj) 
            {
                return true;
            } 
        }      /* Line*/
        
        System.out.println(o.equals("Fred"));
    }
}
  • It prints "true".
  • It prints "Fred".
  • An exception occurs at runtime.
  • Compilation fails
Q.10

Which statement is true about a static nested class?

  • You must have a reference to an instance of the enclosing class in order to instantiate it.
  • It does not have access to nonstatic members of the enclosing class.
  • It's variables and methods must be static.
  • It must extend the enclosing class.
Q.11

What will be the output of the program?

public abstract class AbstractTest 
{
    public int getNum() 
    {
        return    }
    public abstract class Bar 
    {
        public int getNum() 
        {
            return        }
    }
    public static void main (String [] args) 
    {
        AbstractTest t = new AbstractTest() 
        {
            public int getNum() 
            {
                return            }
        };
        AbstractTest.Bar f = t.new Bar() 
        {
            public int getNum() 
            {
                return            }
        };
        
        System.out.println(f.getNum() + " " + t.getNum());
    }
}
  • 57 22
  • 45 38
  • 45 57
  • An exception occurs at runtime.
0 h : 0 m : 1 s