static在工具类中的使用

本文通过一个Java示例程序介绍了如何使用静态方法,并对比了静态方法与非静态方法的调用方式。同时,文章还讲解了如何通过类名直接调用静态方法,以及当构造方法被设置为私有时,仅能通过类名调用静态方法的情况。
public class static工具类的使用 {

    public static void main(String[] args) {

        //定义数组
        int [] arry = {1,3,45,46,7,9,10 };
//       ---------有无static调用方法-----------
//        //静态调用
//      printArray(arry);
//      
//          //非静态调用
//      
//       * static工具类的使用 sta = new static工具类的使用();
//       * sta.printArray(arry);
//       
//  }
//          //静态方法
//  public static void printArray(int [] arry) {
//      for (int i = 0 ; i < arry.length ; i++ ) {
//           
//          if (i == arry.length-1) {
//              System.out.print(arry[i]);
//          }else {
//              System.out.print(arry[i]+",");
//          }
//      }
             //非静态方法
/*  public void printArray(int [] arry) {
        for (int i = 0 ; i < arry.length ; i++ ) {

            if (i == arry.length-1) {
                System.out.print(arry[i]);
            }else {
                System.out.print(arry[i]+",");
            }
        }
    }
*/
        //---------有无static调用类中的方法-----------
        //非静态调用
        /*Arraytools at = new Arraytools();
        at.printArray(arry);*/
    //静态调用
        //Arraytools.printArray(arry);
    }
}

/*
 *把方法设置为静态的之后,既可以使用对象名.方法名调用,
 *也可以使用方法类名.方法名直接调用。
 *如果我们把构造方法直接私有private Arraytools (){}
 *这时我们只能使用类名.方法名直接调用。
 */
 class Arraytools {

    private Arraytools(){
        //我们把构造方法私有之后就不能再创建对象
    }
    public static void printArray(int [] arry) {

        for (int i = 0 ; i < arry.length ; i++ ) {

            if (i == arry.length-1) {
                System.out.print(arry[i]);
            }else {
                System.out.print(arry[i]+",");
            }
        }
    }
  }


在 Java 的 static 类中使用 service 可以采用以下两种常见方法: ### 方法一:静态成员变量和 @PostConstruct 注解 在工具类使用 `@Component` 注解,将其交由 Spring 管理。声明一个静态的工具类对象,使用 `@Autowired` 注入需要的 service,再通过 `@PostConstruct` 注解的初始化方法,将当前对象赋值给静态对象,并将注入的 service 赋值给静态对象的对应 service 属性。这样在静态方法中就可以通过静态对象调用 service 方法。示例代码如下: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.util.List; // 交由 spring 管理 @Component public class BalabalaUtils { // 注入 @Autowired private SysUserService sysUserService; // 声明对象 public static BalabalaUtils balabalaUtils; // 初始化 @PostConstruct public void init() { balabalaUtils = this; balabalaUtils.sysUserService = this.sysUserService; } public static void getBalaList(SysUser user) { // 外部 service 调用 List<SysUser> userList = balabalaUtils.sysUserService.list(user.getIds()); // utils 逻辑处理 balabalaMethod(userList); } } ``` 上述代码中,`BalabalaUtils` 类被 `@Component` 注解标记,`sysUserService` 被 `@Autowired` 注入。在 `init` 方法中,将当前对象赋值给静态对象 `balabalaUtils`,并将注入的 `sysUserService` 赋值给静态对象的 `sysUserService` 属性。在静态方法 `getBalaList` 中,就可以通过 `balabalaUtils.sysUserService` 调用 service 方法 [^3]。 ### 方法二:先不自动注入,使用静态成员变量 可以先创建一个 static 类型的 service 占个坑,不进行自动注入。定义一个静态的 service 成员变量,在需要使用 service 的静态方法中调用该成员变量。示例代码如下: ```java import org.springframework.stereotype.Component; // 使用 @Component 注解表示该类的实例化由 Spring 管理 @Component public class WeWorkUtil { // 企微相关参数 public static MessagePushWeWorkProperties weWorkProperties; // 企微发送消息的方法 public static boolean sendMsg(String userId, String content) { // 此处为方法逻辑,需要调用静态成员变量 String xxx = weWorkProperties.get("xxx"); } } ``` 在上述代码中,`WeWorkUtil` 类使用 `@Component` 注解,`weWorkProperties` 是静态成员变量,在静态方法 `sendMsg` 中可以调用该静态成员变量 [^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值