为了账号安全,请及时绑定邮箱和手机立即绑定

在不同的java类中使用已经初始化的类,

在不同的java类中使用已经初始化的类,

偶然的你 2021-12-01 15:02:56
我是 Java 新手,正在构建一个 springboot 应用程序,其中不同的类需要来自同一来源的数据。源是几个文件,但重要的是要花费一些时间才能将数据导出;获取所有数据与获取不同类需要的每个部分一样快,因此对函数进行分区无济于事。因此,我想要一个初始化一次的类,获取所有数据,然后为需要数据的类提供服务。理想情况下,它仅在请求时才初始化,然后数据将保存在实例中。假设我有这门课:package myapp;import java.util.concurrent.TimeUnit;import java.lang.InterruptedException;public class ExampleClass {    private int usefulValue;    public ExampleClass(){        this.usefulValue = slowMethod();    }    private int slowMethod(){ //just an example of something that takes time        int usefulValue;        try {            TimeUnit.SECONDS.sleep(500);        } catch (InterruptedException e){            ;        }        usefulValue = 15;        return usefulValue;    }    public int getUsefulValue(){        return this.usefulValue;    }}我怎样才能usefulValue让它运行并可供包中的其他类使用而无需在每个单独的类中重新加载它?这些值在内存方面非常易于管理,我正在专门寻找内存解决方案;我可以将它写入文件/数据库或运行一个为应用程序提供服务的套接字服务器,但问题与在 Java 中可以做什么有关。附言。usefulValue大约每天变化一次
查看完整描述

2 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

package myapp;

import java.util.concurrent.TimeUnit;

import java.lang.InterruptedException;


public class ExampleClass {

public static int usefulValue;


public ExampleClass(){

    ExampleClass.usefulValue = slowMethod();

}


private int slowMethod(){ //just an example of something that takes time

    int usefulValue;

    try {

        TimeUnit.SECONDS.sleep(500);

    } catch (InterruptedException e){

        ;

    }

    usefulValue = 15;

    return usefulValue;


}

public int getUsefulValue(){

    return ExampleClass.usefulValue;

}

}

同样在任何其他类中,您可以像这样使用它的值,ExampleClass.usefulValue因此它的值在整个应用程序中或在此线程中保持不变。


查看完整回答
反对 回复 2021-12-01
?
MMTTMM

TA贡献1869条经验 获得超4个赞

您可以使用延迟初始化。


    private Integer usefulValue;

    public ExampleClass(){

        // this.usefulValue = slowMethod();

    }


    public int getUsefulValue(){

        if (this.usefulValue == null) {

            this.usefulValue = slowMethod();

        }

        return this.usefulValue;

    }

或用于此:lombok


查看完整回答
反对 回复 2021-12-01
  • 2 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信