Java内部类用法[重复]

Posted

技术标签:

【中文标题】Java内部类用法[重复]【英文标题】:Java Inner Class usage [duplicate] 【发布时间】:2016-07-01 15:31:24 【问题描述】:

这是一个Java内部类问题,代码如下:

public class Load 
   /*
   static  //load
       System.loadLibrary("lvb");
   */

   public class FILTER_T

      HP05_T hp;
      LP40_T lp;
      NOTCH50_T notch;
      //   Load.FILTER_T.HP05_T hp;
      //  Load.FILTER_T.LP40_T lp;
      //  Load.FILTER_T.NOTCH50_T notch;

      public class HP05_T 
         public int[] buf;
         public long y1;
         public long y2;
         public int ptr;
      

      public class LP40_T 
          public int[] buf;
          public int ptr;
      
      public class NOTCH50_T 
          public int[] buf;
          public int ptr;
       

    

    public native void func1(FILTER_T filter);

    public native int func2(FILTER_T filter, int in);

    public native int[] func3(int a,int[] in,FILTER_T filter);

    public static void main(String[] args) 
      Load load = new Load();
      load.FILTER_T ff = new load.FILTER_T();
      load.func1(ff);
      load.func2(ff, 120);
    


排队

 load.FILTER_T ff = new load.FILTER_T();

有一个编译错误:

错误:包load 不存在

我想知道是否有人知道问题和解决方法。

【问题讨论】:

封闭实例表达式只需要在实例化表达式中,不需要在变量的类型声明中。 你可以使用FILTER_T ff = new FILTER_T();而不加前缀。 为什么它们是内部类?它们似乎不需要 ant 对其封闭实例的引用,因此它们可以是静态嵌套类而不是内部类。您的命名也不尊重 Java 约定,并且将所有内容公开是一种巨大的代码气味。反正语法是FILTER_T ff = load.new FILTER_T(); Java 区分大小写,因此loadLoad 不同 所有这些答案都是错误的!它是一个 inner 类,需要一个 instance 来进行实例化。正确的是load.new FILTER_T(); 【参考方案1】:

这是一个内部的非静态类。您对我们使用外部类的实例来实例化它是正确的。但是,正确的语法是:

FILTER_T ff = load.new FILTER_T();

【讨论】:

以上是关于Java内部类用法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

「Java基本功」一文读懂Java内部类的用法和原理

Java内部类用法总结

java内部类简单用法

Java:静态与内部类[重复]

内部类和匿名内部类的用法

Java内部类