类初始化问题,类中包含自身静态属性

问题描述

类初始化问题,类中包含自身静态属性

类初始化先初始化静态属性,如果静态属性是自身对象,那个如何处理,如下代码

public class Test {
public static Test t = new Test();
}

这样的话是不是就递归了,实际应该不是,这应该怎么解释,求教 谢谢

解决方案

楼上说的对,你这样写相当于
public class Test{
static{
public Test t = new Test();
}
}
static块在类被实例化时,永远只会被调用一次,所以不会构成递归,去掉static就会形成递归

解决方案二:

public static Test t = new Test();不构成递归,因为new Test调用的是实例构造函数,而static初始化放在静态构造函数,不是一个函数。
去掉static就会无限递归。

时间: 2024-11-05 12:13:26

类初始化问题,类中包含自身静态属性的相关文章

Java类初始化和实例化中的2个“雷区”_java

在考虑类初始化时,我们都知道进行子类初始化时,如果父类没有初始化要先初始化子类.然而事情并没有一句话这么简单. 首先看看Java中初始化触发的条件: (1)在使用new实例化对象,访问静态数据和方法时,也就是遇到指令:new,getstatic/putstatic和invokestatic时: (2)使用反射对类进行调用时: (3)当初始化一个类时,父类如果没有进行初始化,先触发父类的初始化: (4)执行入口main方法所在的类: (5)JDK1.7动态语言支持中方法句柄所在的类,如果没有初始化

c# 接口 类-C# 类中包含一个接口属性的意义,在ArcEngine中经常遇到

问题描述 C# 类中包含一个接口属性的意义,在ArcEngine中经常遇到 请教各位,如果一个类中含有一个接口属性,那么是否意味着这个类实现了该接口,如果没有实现,那么包含一个接口属性有什么意义

(mybatis)直接执行sql结果为空,但是session.selectList出的list结果中包含了一个属性为null的bean对象

问题描述 解决方案 解决方案二:你究竟想说什么啊??没查询到数据返回一个空的集合不正常吗??解决方案三:list的size是多少,如果大于0那就可以去探讨一下,如果是0...呵呵

从JVM内存管理的角度谈谈JAVA类的静态方法和静态属性

在JVM中,内存分为两个部分,Stack(栈)和Heap(堆),这里,我们从JVM的内存管理原理的角度来认识Stack和Heap,并通过这些原理认清Java中静态方法和静态属性的问题. 一般,JVM的内存分为两部分:Stack和Heap.(stack和heap都是位于RAM中的) stack(栈)是JVM的内存指令区.stack管理很简单,push一定长度字节的数据或者指令,stack指针压栈相应的字节位移:pop一定字节长度数据或者指令,stack指针弹栈.stack的速度很快,管理很简单,并

浅谈Javascript的静态属性和原型属性

  本文给大家介绍的是javascript中的静态属性和原型属性,并附上示例分析,十分的实用,有需要的小伙伴可以参考下. 文章给各位介绍Javascript的静态方法和原型方法一个例子,如果大家对于Javascript的静态方法和原型方法不了解可以和小编一起来看看. 一段代码,了解静态方法和实例方法: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35

Swift静态属性

在介绍静态属性之前,我们先来看一个类的设计,有一个Account(银行账户)类,假设它有3个属性:amount(账户金额).interestRate(利率)和owner(账户名).在这3个属性中,amount和owner会因人而异,不同的账户这些内容是不同的,而所有账户的interestRate都是相同的.amount和owner属性与账户个体有关,称为实例属性.interestRate属性与个体无关,或者说是所有账户个体共享的,这种属性称为静态属性或类型属性.3种面向对象类型(结构体.枚举和类

php static静态属性和静态方法的调用

这里分析了php面向对象中static静态属性和静态方法的调用.关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了.静态属性.方法(包括静态与非静态)在内存中,只有一个位置(而非静态属性,有多少实例化对象,就有多少个属性). 实例:  代码如下 复制代码 <?php header("content-type:text/html;charset=utf-8"); class Human{  static public $name = &

线程类中可以用静态代码块做初始化静态变量么?这些静态变量会不会有并发问题呢?

问题描述 线程类中可以用静态代码块做初始化静态变量么?这些静态变量会不会有并发问题呢? public class SalesConfirmationUploadThread extends Thread { private boolean result = false; private final SalesConfirmationPipedInputStream input; private long orderId; private String pin; private JingdongS

matrix-C++类中包含数组,如何重载运算符,第一次进入,还没有c币,求大神帮忙了,感激不尽

问题描述 C++类中包含数组,如何重载运算符,第一次进入,还没有c币,求大神帮忙了,感激不尽 这是头文件 #include #ifndef MATRIX_H_ #define MATRIX_H_ class matrix { private: double a[20][20]; int m,n; public: matrix(); matrix(const matrix&a); ~matrix(); matrix operator=(const matrix&a); friend void