java中的内部类内部接口的使用方法说明

  介绍

这期内容当中小编将会给大家带来有关java中的内部类内部接口的使用方法说明,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强>内部类

先讲内部类,内部类就是在类中定义的类,类中的类可以看做是类的一个属性,一个属性可以是静态也可以是非静态的。而内部类也可以定义在类的方法中,再加上匿名类,总共有5种内部类。

<强>静态内部类

我们在类内部定义一个静态的类,如下所示:

@Slf4j   公开课StaticInnerClass {      内部静态类{   无效的print () {   log.info(“内部类是:“+);   }   }      公共静态void main (String [] args) {   StaticInnerClass。内内=new StaticInnerClass.Inner ();   inner.print ();   }   }

因为静态变量可以直接根据类名来存取,所以我们使用新StaticInnerClass.Inner()来实例化内部类。

<强>非静态内部类

类中定义的类也可以是非静态的,如下所示:

@Slf4j   公开课InnerClass {      类内部{   无效的print () {   log.info(“内部类是:“+);   }   }      公共静态void main (String [] args) {   InnerClass。内内=new InnerClass ()。新的内部();   inner.print ();   }   }

要访问到类的变量,需要实例化外部内,然后再实例化内部类:新InnerClass ()。新的内部().

注意这里我们需要使用到两个新的。

<强>静态方法内部类

我们可以在静态方法中定义一个类,这个类其实就相当于方法中的变量,这个变量当然不能是静态的。我们看下面的例子:

@Slf4j   公开课StaticMethodInnerClass {      私有静态字符串x=熬蔡瑇";      公共静态孔隙print () {   类MyInner {   公共空间打印(){   log.info (“x是”;+ x);   }   }   新MyInner MyInner i=();   i.printOuter ();   }      公共静态void main (String [] args) {   StaticMethodInnerClass.print ();   }   }

方法中的类,我们是无法在外部实例化的。

<强>非静态方法的内部类

同样的非静态方法也可以定义内部类:

@Slf4j   公开课MethodInnerClass {      私人字符串x=胺蔷蔡瑇";      公共空间print () {   类MyInner {   公共空间打印(){   log.info (“x是”;+ x);   }   }   新MyInner MyInner i=();   i.printOuter ();   }      公共静态void main (String [] args) {   新的MethodInnerClass () .print ();   }   }

注意,这里需要先实例化外部类才可以继续调用。

<强>匿名类

最后一个,匿名类,直接在需要的时候实例化的类。匿名类我们遇到了很多次了,比如在构建SortedSet的时候,可以传入自定义的比较器,我们可以用匿名类来实现,也可以直接使用λ表达式。

公共类AnonymousClass {
  
  公共静态void main (String [] args) {
  SortedSet sortedSet1=new ConcurrentSkipListSet(新比较器(){
  @Override
  公共int比较(o1,对象o2) {
  返回0;
  }
  });
  
  SortedSet sortedSet2=new ConcurrentSkipListSet ((o1、o2)→0);
  }
  }

<>强内部接口

内部接口是指在接口中定义的接口。最常见的就是中映射的输入了:

公共接口Map{
  接口Entry{
  K getKey ();
  }

这里的内部接口一定是静态的,因为接口是不能实例化的,所以为了访问到接口中的接口,必须定义为静态的。如果不指定,则默认就是静态的。

我们看一个该内部接口的实现:

 

java中的内部类内部接口的使用方法说明