java 静态内部类实例化
时间: 2023-11-18 13:57:32 浏览: 40
静态内部类实例化需要使用外部类名加上静态内部类名来创建对象,例如:OuterClass.InnerClass inner = new OuterClass.InnerClass();。静态内部类可以直接访问外部类的静态变量和方法,但需要实例化外部类才能访问非静态变量和方法。静态内部类在外部类加载时不会被加载,只有在第一次使用时才会被加载。
相关问题
java内部类实例化
在Java中,内部类是指在一个类的内部定义的类。内部类可以访问外部类的属性和方法,并且可以访问外部类的私有成员。
要实例化内部类,首先需要实例化外部类对象,然后通过外部类对象来实例化内部类对象。实例化内部类的语法如下:
外部类名.内部类名 内部类对象名 = 外部类对象名.new 内部类名();
例如,假设有一个外部类Person,内部类是Student,我们可以通过以下方式实例化内部类对象:
Person person = new Person();
Person.Student student = person.new Student();
在上面的代码中,先实例化外部类对象person,然后通过外部类对象person来实例化内部类对象student。
需要注意的是,如果内部类是静态的,则可以直接使用外部类名来实例化内部类对象,无需先实例化外部类对象。
此外,如果内部类是私有的,那么只能在外部类的内部进行实例化,外部类的外部无法直接实例化私有内部类。
总而言之,通过实例化外部类对象然后使用外部类对象来实例化内部类对象,我们可以实现对Java内部类的实例化。
java单例静态内部类
Java单例的静态内部类实现方式,也称为“静态内部类单例模式”,是一种线程安全的单例实现方式。它的特点是:在Singleton类被加载时,静态内部类SingletonHolder没有被加载进内存,只有当调用getInstance()方法时,才会加载SingletonHolder类,从而初始化instance对象。
下面是一个示例代码:
```
public class Singleton {
private Singleton() {}
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
```
在上述代码中,SingletonHolder是一个静态内部类,它包含一个静态的、final的Singleton实例。getInstance()方法返回的是SingletonHolder的INSTANCE,这是一个静态属性,在第一次获取时,会触发SingletonHolder类的加载,从而创建Singleton实例。
由于静态内部类只会被加载一次,所以这种方式实现的单例模式是线程安全的。同时,它也不需要使用synchronized或者volatile等关键字,因此效率较高。
需要注意的是,这种方式实现单例模式,也需要将构造函数声明为私有的,防止从外部直接创建实例。