Java的初始化函数

我们来考虑类型的装载,连接和初始化

已经对象的生命周期。



可能出现在class文件中的两种编译器产生的方法是:

实例初始化方法(名为<init>)

类与接口初始化方法(名为<clinit>)。


<clinit>方法依次执行如下语句:

类变量初始化语句

静态初始化语句



我们在来看看<init>这个方法:

<init>方法是在一个类进行对象实例化时调用的。


实例化一个类有四种途径:

调用new操作符;

调用Class或java.lang.reflect.Constructor对象的newInstance()方法;

调用任何现有对象的clone()方法;

通过java.io.ObjectInputStream类的getObject()方法反序列化。


### Java初始化方法 `init` 的使用 #### 方法定义与作用范围 在Java中,`<init>()`并不是由程序员直接编写的方法名称,而是编译器自动生成的一个特殊构造函数,在每次创建对象时都会调用它来完成实例变量的初始化工作[^2]。需要注意的是,这里提到的`<init>`并非用户可直接访问或重写的方法;它是JVM内部使用的术语。 对于Web应用中的Servlets和Filters组件而言,则确实存在名为`init()`的实际方法供开发者实现。此方法属于生命周期的一部分,当容器加载这些组件并准备就绪以处理请求之前会被自动调用一次。如果发现该方法被执行多次,可能是由于不当配置所致,比如同时采用了注解方式以及XML文件形式进行了重复声明[^3]。 #### 实现示例 下面是一个简单的例子展示如何在一个标准Java类里通过构造器来进行属性设置: ```java public class Person { private String name; public Person(String name){ this.name = name; // 构造器内执行初始化操作 } } ``` 而对于Servlet/Filter来说,可以这样覆盖其默认行为: ```java import javax.servlet.*; import java.io.IOException; public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("MyFilter initialized."); // 可在此处读取配置参数等 } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 过滤逻辑... chain.doFilter(request,response); } @Override public void destroy() { // 清理资源 } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值