【java】static 和 final

static 和 final 是 Java 中两个不同的关键字,它们有不同的用途。

static 关键字:

静态变量(类变量): 用于创建类变量,被所有实例共享。可以通过类名访问,无需创建类的实例。

public class MyClass {
    static int count = 0;
}

静态方法: 用于创建类方法,可以通过类名调用,无需创建类的实例。

public class MyClass {
    static void myStaticMethod() {
        // ...
    }
}

静态块: 用于在类加载时执行一次性的初始化代码。

public class MyClass {
    static {
        // Initialization code
    }
}

final 关键字:

常量: 用于声明常量,一旦赋值后不可更改。

public class MyClass {
    static {
        // Initialization code
    }
}

变量: 用于声明变量,一旦赋值后不可再次赋值。

public class MyClass {
    final int myNumber = 42;
}

方法: 用于防止方法被子类重写。

public class MyBaseClass {
    final void myMethod() {
        // ...
    }
}

类: 用于防止类被继承。

public final class MyFinalClass {
    // ...
}

参数: 用于防止方法内的参数被修改。

public void myMethod(final int value) {
        // 'value' is now effectively final
        }

总体而言,static 主要用于描述类级别的特性,而 final 主要用于描述不可改变的常量、变量、方法或类。在某些情况下,它们可以一起使用,例如声明静态不可变的常量。

注解(Annotation):

定义: 注解是一种标记在Java源代码中的特殊标签,用于提供元数据(metadata)。

作用: 注解可以用于为程序元素(类、方法、字段等)添加元数据,从而提供额外的信息。它们可以被编译器、工具和运行时环境读取和处理。

示例: 常见的注解包括 @Override、@Deprecated、@SuppressWarnings 等。用户也可以创建自定义注解,以满足特定的需求。

@Override
public void myMethod() {
    // code here
}

@Deprecated
public void oldMethod() {
    // deprecated code here
}

@MyCustomAnnotation(value = "example")
public class MyClass {
    // class code here
}

反射(Reflection):

定义: 反射是在运行时动态获取信息以及操作对象的能力。在Java中,通过反射,可以在运行时获取类的信息、构造对象、调用方法、访问字段等。

作用: 主要用于创建灵活的、通用的代码,例如在运行时处理未知类型的对象,实现通用的数据访问、配置文件解析等。

示例: 使用反射可以动态地获取类的信息,并在运行时创建类的实例。

Class<?> clazz = MyClass.class;
Object obj = clazz.newInstance(); // 创建类的实例
        Method method = clazz.getMethod("myMethod"); // 获取方法
        method.invoke(obj); // 调用方法

注解和反射通常一起使用,例如在某些框架中,注解用于标记类和方法,而反射用于动态地处理这些标记,并实现相应的功能。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值