0 0

Java类初始化问题5

需要在一个单例模式类里初始化另外一个类,只是让另外一个类初始化,不做任何操作,请问用new方式而不赋给另外一个值,会不会造成单例模式类永久持有新new的类?大家只需要初始化一个类而不用操作都是怎么做的呢?谢谢啦!
public class TestA {
    private static Test instance;

    private TestA {
        [color=red]new TestB(); //这里[/color]    
    }

    public static TestA getInstance() {
        if(instance == null) {
            instance = new TestA();
        }
        return instance;
    }
}

class TestB {
    public TestB {
        //blablabla
    }
}

问题补充:
地狱牢笼 写道
不操作模拟初始化做什么。申明不就行了。等到要操作的时候再初始化。


需要类B初始化一些环境,并不需要对它操作。

问题补充:
guazi 写道
这个是有问题的,
引用
private TestA { 
        new TestB(); //这里[/color]     
    } 

这里是一个匿名变量,这句执行完之后该对象即被垃圾回收了,
可以这个样子:
private static TestB testB = new TestB();  

这样就可以永久持有了。

只是要通过类B初始化一些环境

问题补充:
地狱牢笼 写道
“需要类B初始化一些环境,并不需要对它操作。”
那更不明白了。
new 能初始化B。但是你又想在内存中B对象不要一直存在?而B的环境存在?不知道是不是?

对,B类初始化对其他地方有一些赋值
2011年12月30日 09:35

6个答案 按时间排序 按投票排序

0 0

采纳的答案

引用

只是要通过类B初始化一些环境

如果你只是想通过new testB() 来初始化一些所谓的环境变量(这个变量最好不是在b中的,而是在系统中的)那是可以的,但是单例类并不会持有改对象。

2011年12月30日 10:04
0 0

那你把那些赋值写到static 方法,这边调一下不就行了。

2011年12月30日 10:06
0 0

public class TestA {   
    private static final Test instance=new TestA();      
  
    private TestA {   
        new TestB(); //    单例类不会持有新new的类 
    }   
  
    public static TestA getInstance() {   
        return instance;   
    }   
} 

2011年12月30日 09:59
0 0

“需要类B初始化一些环境,并不需要对它操作。”
那更不明白了。
new 能初始化B。但是你又想在内存中B对象不要一直存在?而B的环境存在?不知道是不是?

2011年12月30日 09:57
0 0

这个是有问题的,

引用
private TestA { 
        new TestB(); //这里[/color]     
    } 

这里是一个匿名变量,这句执行完之后该对象即被垃圾回收了,
可以这个样子:
private static TestB testB = new TestB();  

这样就可以永久持有了。

2011年12月30日 09:43
0 0

不操作模拟初始化做什么。申明不就行了。等到要操作的时候再初始化。

2011年12月30日 09:42

相关推荐

    java数组初始化详解

    Java 数组初始化详解 Java 数组初始化是 Java 编程语言中的一种基本概念,它允许开发者创建和初始化数组,以便于存储和操作数据。在本文中,我们将对 Java 数组初始化进行详细的介绍,包括一维数组和二维数组的声明...

    java面试题-类的初始化顺序.doc

    类--初始化块"); 39. } 40. // 构造器 41. public SubClass() { 42. System.out.println("子类--构造器"); 43. } 44. 45. public static void main(String[]...因此,掌握类的初始化顺序是每个Java开发者必备的知识点。

    java程序初始化顺序

    在Java编程语言中,程序初始化的顺序是一个关键概念,它涉及到类加载、对象创建以及执行流程的安排。了解这些顺序对于编写高效、无错误的代码至关重要。以下是对Java程序初始化顺序的详细说明: 1. **类加载阶段**...

    Java类继承初始化顺序

    静态初始化块用于初始化类级别的静态变量,它们只在类加载时执行一次。 2. **成员变量初始化**:接下来,初始化父类的非静态成员变量,这是通过调用父类的构造器实现的。Java规定每个子类实例在构造之前必须先调用...

    Java静态初始化块和对象初始化块

    在Java编程语言中,初始化块是程序执行时用于初始化对象或类的重要机制。这里我们将深入探讨两种类型的初始化块:静态初始化块(Static Initializer Block)和对象初始化块(Instance Initializer Block)。这两种...

    Java变量初始化

    Java 变量初始化的时机可以分为两类:实例变量初始化和类变量初始化。 实例变量初始化 实例变量初始化可以在三个地方进行: 1. 定义实例变量的时候指定初始值; 2. 非静态初始化代码块中对实例变量指定初值; 3. ...

    java中类的初始化顺序

    ### Java中类的初始化顺序详解 #### 一、概述 在Java编程语言中,类的初始化是一个非常重要的概念。类的初始化涉及到多个方面,包括静态成员变量、实例成员变量、静态初始化块、实例初始化块以及构造函数等。本文...

    java代码的初始化顺序demo

    它用于初始化类级别的静态变量。在`init`目录下的文件可能包含了不同静态初始化的示例。 3. **实例化阶段**: 当我们创建一个新的对象时,Java会进行实例初始化。首先,分配内存空间,然后调用构造函数。实例初始...

    java类变量初始化顺序

    详细讲解java类中静态变量,普通标量,对象、基本类型的初始化顺序。

    java 初始化与方法

    构造方法用于初始化类的新实例,普通方法执行特定任务,静态方法与类关联而非实例,抽象方法则在接口或抽象类中定义,需由子类实现。方法的参数传递、返回值和重载也是重要的知识点,理解这些能帮助我们编写更灵活...

    深入java虚拟机(三)——类的生命周期(下)类的初始化1

    5. **初始化类的子类**。 6. **JVM启动时作为主类的类**。 例如,如果我们有一个`Singleton`类,其中包含静态变量和静态初始化代码块,如下所示: ```java class Singleton { private static Singleton singleton...

    6种方法初始化JAVA中的list集合

    本文将详细介绍6种初始化Java List集合的方法,并通过代码示例帮助理解每种方法的使用和特点。 1. 常规方式 这是最常见的初始化List的方式,通过创建ArrayList实例并逐个添加元素。自JDK 7以后,可以省略泛型类型的...

    Java初始化块Java初始化块.doc

    总结起来,Java初始化块是Java中用于对象和类初始化的重要工具,它们在不同场景下提供了一种灵活的方式来控制对象和类的状态。理解初始化块的工作原理对于编写高效且无错误的Java代码至关重要。在编写代码时,应谨慎...

    45.java数组动态初始化.zip

    45.java数组动态初始化.zip45.java数组动态初始化.zip45.java数组动态初始化.zip45.java数组动态初始化.zip45.java数组动态初始化.zip45.java数组动态初始化.zip45.java数组动态初始化.zip45.java数组动态初始化.zip...

    44.java数组静态初始化.zip

    44.java数组静态初始化.zip44.java数组静态初始化.zip44.java数组静态初始化.zip44.java数组静态初始化.zip44.java数组静态初始化.zip44.java数组静态初始化.zip44.java数组静态初始化.zip44.java数组静态初始化.zip...

    java类中静态域、块,非静态域、块,构造函数的初始化顺序

    ### Java 类中静态域、块,非静态域、块,构造函数的初始化顺序 #### 一、概述 在 Java 编程语言中,类的初始化顺序对于理解程序的行为至关重要。特别是当涉及到静态域(静态变量)、非静态域(实例变量)、静态块...

    详解Java的初始化与清理

    本文将深入探讨Java中的初始化过程,包括对象的构造器初始化以及类成员的初始化顺序,同时也会涉及Java的垃圾回收机制,即内存的自动清理。 首先,让我们详细了解一下Java中的构造器初始化。构造器是Java中用于初始...

Global site tag (gtag.js) - Google Analytics