比如:
public class MyClass{
   interface I1{
       void method1();
   }
}
MyClass中的I1接口是静态的还是非静态的?

解决方案 »

  1.   

    非静态的!!你也可以自己在别的包中写一个测试类,直接用MyClass去调用I1就知道是哪种了!
      

  2.   

    static不需要人为的实例化,interface表示调用时必须要实例化因此2个是矛盾的,不会一起出现
      

  3.   

    对于I1的使用并不需要MyClass对象的存在,所以I1是静态的。
    见http://www.javaeye.com/problems/39076
      

  4.   

    和内部类的概念类比而言
    内部接口是静态的,测试如下:/*
     * file: InnerInterface.java
     * class: InnerInterface
     *
     * description: 
     *
     * @author:  leisore
     * @version: V1.0.0
     */
    package cn.leisore.daily._2010_06_04;public class InnerInterface  {
        
        private interface PI {}
        
        protected interface protectedI {}
        
        interface friendI {}
        
        public interface publicI {}
        
        public static interface staticPublicI {}
         public InnerInterface() {
    }
    public static void main(String[] args) {
    }
    }
    /**
     * desc:
     *     XXX<br>
     * ----------------------------------------------------------------------------
     * ver.            date           who           what
     * ----------------------------------------------------------------------------
     * 0.0.1           2010-6-4      leisore       add
     * ----------------------------------------------------------------------------
     */
    package cn.leisore.daily._2010_06_04;/**
     * TestInnerInterface 
     *
     * @author leisore
     * @since version 0.0.1
     */
    public class TestInnerInterface {    public static void main(String[] args) {
            
            InnerInterface.friendI i1 = new InnerInterface.friendI() {}; 
            InnerInterface.protectedI i2 = new InnerInterface.protectedI() {};
            InnerInterface.publicI i3 = new InnerInterface.publicI() {};
            
            System.out.println(i1);
            System.out.println(i2);
            System.out.println(i3);
        }
    }
    /**
    输出:
    n.leisore.daily._2010_06_04.TestInnerInterface$1@10b30a7
    cn.leisore.daily._2010_06_04.TestInnerInterface$2@1a758cb
    cn.leisore.daily._2010_06_04.TestInnerInterface$3@1b67f74
    */内部类/**
     * desc:
     *     XXX<br>
     * ----------------------------------------------------------------------------
     * ver.            date           who           what
     * ----------------------------------------------------------------------------
     * 0.0.1           2010-6-4      leisore       add
     * ----------------------------------------------------------------------------
     */
    package cn.leisore.daily._2010_06_04;import cn.leisore.daily._2010_06_04.InnerInterface.protectedI;/**
     * InnerClass 
     *
     * @author leisore
     * @since version 0.0.1
     */
    public class InnerClass {
        
        private class I1 {}
        private static class I2 {}
        
        class I3 {}
        static class I4 {}
        
        protected class I5 {}
        protected static class I6 {}
        
        public class I7 {}
        public static class I8 {}    public static void main(String[] args) {
            InnerClass ic = new InnerClass();
            InnerClass.I1 i1 = ic.new I1();
            InnerClass.I2 i2 = new InnerClass.I2();
            InnerClass.I3 i3 = ic.new I3();
            InnerClass.I4 i4 = new InnerClass.I4();
            InnerClass.I5 i5 = ic.new I5();
            InnerClass.I6 i6 = new InnerClass.I6();
            InnerClass.I7 i7 = ic.new I7();
            InnerClass.I8 i8 = new InnerClass.I8();
            
            class MC {}
            MC mc = new MC();
            
            System.out.println(i1);
            System.out.println(i2);
            System.out.println(i3);
            System.out.println(i4);
            System.out.println(i5);
            System.out.println(i6);
            System.out.println(i7);
            System.out.println(i8);
            System.out.println(mc);
        }
    }
    /**
    输出:
    cn.leisore.daily._2010_06_04.InnerClass$I1@69b332
    cn.leisore.daily._2010_06_04.InnerClass$I2@173a10f
    cn.leisore.daily._2010_06_04.InnerClass$I3@530daa
    cn.leisore.daily._2010_06_04.InnerClass$I4@a62fc3
    cn.leisore.daily._2010_06_04.InnerClass$I5@89ae9e
    cn.leisore.daily._2010_06_04.InnerClass$I6@1270b73
    cn.leisore.daily._2010_06_04.InnerClass$I7@60aeb0
    cn.leisore.daily._2010_06_04.InnerClass$I8@16caf43
    cn.leisore.daily._2010_06_04.InnerClass$1MC@66848c
    */