首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有办法在运行时获取正在使用的Guava版本?

有办法在运行时获取正在使用的Guava版本。Guava是一个广泛使用的Java库,它提供了许多核心功能,例如集合、缓存、字符串处理等。要在运行时获取Guava版本,您可以使用以下方法:

  1. 使用com.google.common.base.Optional类的getClass()方法:
代码语言:java
复制
import com.google.common.base.Optional;

public class GuavaVersion {
    public static void main(String[] args) {
        Optional<String> optional = Optional.absent();
        Package optionalPackage = optional.getClass().getPackage();
        String guavaVersion = optionalPackage.getImplementationVersion();
        System.out.println("Guava版本: " + guavaVersion);
    }
}
  1. 使用com.google.common.collect.ImmutableList类的getClass()方法:
代码语言:java
复制
import com.google.common.collect.ImmutableList;

public class GuavaVersion {
    public static void main(String[] args) {
        ImmutableList<String> list = ImmutableList.of();
        Package listPackage = list.getClass().getPackage();
        String guavaVersion = listPackage.getImplementationVersion();
        System.out.println("Guava版本: " + guavaVersion);
    }
}
  1. 使用com.google.common.base.Preconditions类的getClass()方法:
代码语言:java
复制
import com.google.common.base.Preconditions;

public class GuavaVersion {
    public static void main(String[] args) {
        Preconditions.checkState(true);
        Package preconditionsPackage = Preconditions.class.getPackage();
        String guavaVersion = preconditionsPackage.getImplementationVersion();
        System.out.println("Guava版本: " + guavaVersion);
    }
}

这些方法都可以在运行时获取正在使用的Guava版本。请注意,这些方法依赖于Guava库的具体实现,因此在未来的Guava版本中可能会发生变化。

推荐的腾讯云相关产品:

  1. 腾讯云服务器:提供弹性、可扩展的云服务器,可以满足各种应用场景的需求。
  2. 腾讯云数据库:提供MySQL、PostgreSQL、MongoDB等多种数据库服务,支持自动备份和恢复。
  3. 腾讯云容器服务:支持Docker容器的部署和管理,可以满足容器化应用的需求。
  4. 腾讯云云原生:提供Kubernetes、Serverless等云原生解决方案,支持弹性伸缩和高可用性。

腾讯云产品介绍链接地址:https://cloud.tencent.com/product

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

微服务中使用Maven BOM来管理你服务版本

BOM简介 BOM(Bill of Materials) 是由Maven提供功能,它通过定义一整套相互兼容jar包版本集合,使用时只需要依赖该BOM文件,即可放心使用需要依赖jar包,且无需再指定版本号...BOM维护方负责版本升级,并保证BOM中定义jar包版本之间兼容性。...为什么要使用BOM 使用BOM除了可以方便使用者在声明依赖客户端时不需要指定版本号外,最主要原因是可以解决依赖冲突,如考虑以下依赖场景: 项目A依赖项目B 2.1和项目C 1.2版本: 项目B...在这种情况下,由于项目C依赖1.3版本项目D,但是在运行时生效的确是1.1版本,所以在运行时很容易产生问题,如 NoSuchMethodError, ClassNotFoundException等。... 如果需要使用不同于当前bom中所维护jar包版本,则加上 覆盖即可,如: ...

2.6K31
  • java retry(重试) spring retry, guava retrying 详解

    ,解决办法还是有的。...CGLIB CGLIB 是一个功能强大、高性能和高质量代码生成库,用于扩展JAVA类并在运行时实现接口。 javassist javassist (Java编程助手)使Java字节码操作变得简单。...它是Java中编辑字节码类库;它允许Java程序在运行时定义新类,并在JVM加载类文件时修改类文件。 与其他类似的字节码编辑器不同,Javassist提供了两个级别的API:源级和字节码级。...guava-retrying guava-retrying 模块提供了一种通用方法, 可以使用Guava谓词匹配增强特定停止、重试和异常处理功能来重试任意Java代码。...优雅重试适用场景 功能逻辑中存在不稳定依赖场景,需要使用重试获取预期结果或者尝试重新执行逻辑不立即结束。比如远程接口访问,数据加载访问,数据上传校验等等。

    1.5K30

    Java 多行字符串

    从 JDK 15 开始,Java 提供了一个称为 Text Blocks 语法,你可以在代码中直接使用这个功能,如果你安装这个版本 JDK 的话,那么需要使用一些特定方法实现这个目标。...--Stephen King"""; } 这种定义方式在当前 Java 中最方便实现了,但是因为 JDK 版本限制,很多项目可能根本没有办法使用这种定义方式。...String newLine = System.getProperty("line.separator"); 如果你 JDK 版本是在 7 以上版本的话,你可以直接使用系统提供: System.out.println...如果你项目已经使用了外部库的话,你也是可以直接拿来用。 例如,大部分项目中都会使用 Guava。我们可以使用 Guava Joiner 类。...尤其在粘贴时候,IDE 通常都能够自动在你拷贝文本后面添加回车换行符号,就是我们常说 \r\n。 需要注意是,这个是没有办法在运行时使用

    4K20

    别再重复造轮子了,推荐使用 Google Guava 开源工具类库,真心强大!

    Guava 设计上推荐使用 null 值,大多数情况下,遇到 null 值会抛异常. 3、一个不可变 ImmutableXxx 集合可以通过以下几种方式创建: 使用 copyOf 方法,如 ImmutableSet.copyOf...4、Guava 为 java jdk 每种标准集合类型提供了简单易用不可变版本,包括 Guava 自己集合变体,为 java 提供不可变版本都是继承 java jdk 接口而来,所以操作上基本无异...下面接口实现类也都有对应不可变版本。...* Stopwatch start():启动秒表,如果秒表已经在运行,则 IllegalStateException  * Stopwatch stop():停止秒表,将来读取将返回到目前为止经过固定持续时间...关注Java技术栈看更多干货 获取 Spring Boot 实战笔记!

    1.6K40

    深度解密Go语言之基于信号抢占式调度

    不知道大家在实际工作中有没有遇到过老版本 Go 调度器坑:死循环导致程序“死机”。我去年就遇到过,并且搞出了一起 P0 事故,还写了篇弱智找 bug 文章。...demo-2 示意图 当主 goroutine 主动触发 GC 时,需要把所有当前正在运 goroutine 停止下来,即 stw(stop the world),但是 goroutine 正在执行无限循环...Go 1.14 之前版本,能否抢占一个正在执行死循环 goroutine 其实是有讲究: 能否被抢占,不是看有没有调用函数,而是看函数序言部分有没有插入扩栈检测指令。...preemptone() 函数会沿着下面这条路径: preemptone->preemptM->signalM->tgkill 向正在运 goroutine 所绑定那个 M(也可以说是线程)发出...运行 schedule 函数用是 g0 栈,它会去寻找其他可运行 goroutine,包括从当前 P 本地可运行队列获取、从全局可运行队列获取、从其他 P 偷等方式找到下一个可运行 goroutine

    3.1K10

    Python|tryexcept捕捉SyntaxError

    处理错误和处理异常 当程序出现了问题,总要想办法处理。如果程序在运行前出错,就需要自己修正,让程序能运行。如果程序在运行时出错,程序特别简单时,我们可以使用条件判断避开出错情况,如图所示。 ?...这里就是一个简单获取一个数组指定位置元素,位置让用户输入,在用户输入过程中我们首先要考虑用户输入是不是一个整数。...就这么简单一个程序,写这么多条件判断确实有点繁琐。如果遇到复杂程序,if估计得嵌套死。有没有简单方法,比如我只用一个if判断。...办法还是有的,就是使用try/except来捕获这样问题,修改代码如图所示。 ?...这是因为SyntaxError并不总是出现在运行前,有的时候会在运行时出现。要想让它在运行时出现,我必须首先介绍两个函数——exec和eval。

    1.9K10

    别再造轮子了,Google 开源 Guava 工具库真心强大!

    Guava 设计上推荐使用 null 值,大多数情况下,遇到 null 值会抛异常. 3、一个不可变 ImmutableXxx 集合可以通过以下几种方式创建: 使用 copyOf 方法,如 ImmutableSet.copyOf...4、Guava 为 java jdk 每种标准集合类型提供了简单易用不可变版本,包括 Guava 自己集合变体,为 java 提供不可变版本都是继承 java jdk 接口而来,所以操作上基本无异...下面接口实现类也都有对应不可变版本。...* Stopwatch start():启动秒表,如果秒表已经在运行,则 IllegalStateException      * Stopwatch stop():停止秒表,将来读取将返回到目前为止经过固定持续时间...提供近 3W 行代码 SpringBoot 示例,以及超 4W 行代码电商微服务项目。 获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。 文章有帮助的话,在看,转发吧。

    97931

    Google Guava Cache 使用

    例如,计算或检索一个值代价很高,并且对同样输入需要不止一次获取时候,就应当考虑使用缓存。 Guava Cache与ConcurrentMap很相似,但也不完全一样。...缓存中存放数据总量不会超出内存容量。(Guava Cache是单个应用运行时本地缓存。它不把数据存放到文件或外部服务器。...加载 在使用缓存前,首先问自己一个问题:有没有合理默认方法来加载或计算与键关联值?如果有的话,你应当使用CacheLoader。...Callable 所有类型Guava Cache,不管有没有自动加载功能,都支持get(K, Callable)方法。...等待另一个正在加载值线程属于较简单情况:使用可中断等待就实现了中断支持;但当前线程加载值情况就比较复杂了:因为加载值CacheLoader是由用户提供,如果它是可中断,那我们也可以实现支持中断

    1.2K30

    在gradle中构建java项目

    'junit:junit:4.13' implementation 'com.google.guava:guava:29.0-jre' } 再看一个library依赖: dependencies...:guava:29.0-jre' } 因为library是需要给第三方应用程序使用,所以这里多了一个api使用,api表示是第三方应用程序也需要依赖这个包,而implementation表示是该包只是在这个项目内部被依赖...和maven一样,我们在gradle中指定依赖需要指定依赖名字和版本号,依赖范围:是运行时依赖还是编译时依赖,还有一个重要就是在哪里可以找到这个library。...implementation:表示依赖包被用在编译和运行时。 runtimeOnly:只在运行时使用。 testCompileOnly:仅在test编译时使用。...testImplementation:在test编译和运行时使用。 testRuntimeOnly:在test行时使用

    1.3K31

    在gradle中构建java项目

    'junit:junit:4.13' implementation 'com.google.guava:guava:29.0-jre' } 再看一个library依赖: dependencies...:guava:29.0-jre' } 因为library是需要给第三方应用程序使用,所以这里多了一个api使用,api表示是第三方应用程序也需要依赖这个包,而implementation表示是该包只是在这个项目内部被依赖...和maven一样,我们在gradle中指定依赖需要指定依赖名字和版本号,依赖范围:是运行时依赖还是编译时依赖,还有一个重要就是在哪里可以找到这个library。...implementation:表示依赖包被用在编译和运行时。 runtimeOnly: 只在运行时使用。 testCompileOnly: 仅在test编译时使用。...testImplementation:在test编译和运行时使用。 testRuntimeOnly: 在test行时使用

    1.6K30

    一口气带你踩完五个 List 大坑!

    查看 java.util.Arrays$ArrayList 实现,我们可以发现底层实际使用了原始数组。 ? 知道了实际原因,修复办法也很简单,套娃一层 ArrayList 呗!... unmodifiableList = ImmutableList.copyOf(list); 相比而言 Guava 方式比较清爽,使用也比较简单,推荐使用 Guava 这种方式生成不可变集合...修复办法有两种: 使用 Iterator#remove 删除元素 ? iterator JDK1.8 List#removeIf ? 推荐使用 JDK1.8 这种方式,简洁明了。...如果没办法使用了 Arrays.asList 和 List.subList ,返回给其他方法时候,一定要记得再套娃一层真正 java.util.ArrayList。...第二 JDK 提供不可变集合实际非常笨重,并且低效,还不安全,所以推荐使用 Guava 不可变集合代替。 最后,切记,不要随便在 foreach增加/删除元素。

    39620

    高效 Java 人必须知道十大框架

    通过 JUnit,可以轻松地写出可重复测试代码。早期版本 JUnit 属于 junit.framework 包;而从 JUnit 4 开始,便转移到了 org.junit 包。...一般当测试正常进行时,进度条是绿;而当遇到了错误,就会变红。 此外,JUnit 还允许开发者创建测试套件 (Test Suite) 来查看、检测整体测试进度及测试期间发生副作用。...反射是这里关键,用于识别在运行时序列化对象图结构。 对象不需要修改。 任何内部字段都可以使用 XStream 序列化。...Log4J 提供对多个API支持,可以在白名单应用程序中使用不同版本 Log4j 或 SLF4J。另一个有趣功能是它支持用户自定义消息对象。最重要是,它工作速度相当令人印象深刻。...Joda Time 很容易使用,并且像 getYear()或 getDayOfWeek()这样属性访问器可以直接获取日期,及其更详细信息。

    90320

    一口气带你踩完五个 List 大坑,真的是处处坑啊!

    unmodifiableList = ImmutableList.copyOf(list); 相比而言 Guava 方式比较清爽,使用也比较简单,推荐使用 Guava 这种方式生成不可变集合...修复办法有两种: 使用 Iterator#remove 删除元素 ? JDK1.8 List#removeIf ? 推荐使用 JDK1.8 这种方式,简洁明了。...运行这段代码,可以发现这段代码又不会报错了,有没有很意外? 感兴趣同学可以自行研究源码,或者直接查看 @why技术文章: 这道Java基础题真的有坑!...如果没办法使用了 Arrays.asList 和 List.subList ,返回给其他方法时候,一定要记得再套娃一层真正 java.util.ArrayList。...第二 JDK 提供不可变集合实际非常笨重,并且低效,还不安全,所以推荐使用 Guava 不可变集合代替。 最后,切记,不要随便在 foreach增加/删除元素。

    1.4K31

    Java9来了,快来了解下JPMS基础吧!

    然而,愿望是美好,项目目标并不总是能够得到满足。 什么是JPMS Module? JPMS是对Java库,语言和运行时更改。...基本上,JPMS作者(Oracle)已经开始构建一个JVM扩展,可以用于可以被描述为模块东西,而现有的模块系统却是从今天存在大型应用程序中获取真实用例和棘手案例经验和价值。...阅读“模块”相关文章时,请注意你正在阅读文章作者是否来自OSGi / JBoss模块设计阵营。...这是一个可选依赖关系。如果Guava在模块路径上,则Joda-Convert将能够看到并使用它,如果不存在Guava,则不会发生错误。如虚线显示。 ?...你不能将相同模块名称加载两次 - 你不能同时加载两个相同模块两个版本。因此,你构建工具可以创建一个可实际运行连贯模块。因此,由于冲突版本引起类路径地狱状况尚未解决。

    2.8K80

    在gradle中构建java项目

    'junit:junit:4.13' implementation 'com.google.guava:guava:29.0-jre' } 再看一个library依赖: dependencies...:guava:29.0-jre' } 因为library是需要给第三方应用程序使用,所以这里多了一个api使用,api表示是第三方应用程序也需要依赖这个包,而implementation表示是该包只是在这个项目内部被依赖...和maven一样,我们在gradle中指定依赖需要指定依赖名字和版本号,依赖范围:是运行时依赖还是编译时依赖,还有一个重要就是在哪里可以找到这个library。...implementation:表示依赖包被用在编译和运行时。 runtimeOnly: 只在运行时使用。 testCompileOnly: 仅在test编译时使用。...testImplementation:在test编译和运行时使用。 testRuntimeOnly: 在test行时使用

    1.8K51

    Java 范围比较推荐姿势

    如需要校验某个日期是否在某个范围;需要校验某个版本号是否在某个区间;需要校验某个时间点是否在某个时间段内;判断某个人是否属于某个年龄段;判断某个用户积分是否属于某个等级区间等。...前一阵子,技术群里有哥们就提了类似的一个问题: 判断当前时间是否在周期时间段里面有什么好办法吗 比如 当前时间是2021-10-1 5:00:00 ,设置时间段为 2021-9-30 1:00:...那么每天5-18点都在周期时间段里面。 [合十] 有图有真相 群里也有不少同学表达自己建议 还有 那么,有没有比较优雅判断方式呢?...Android - Use Guava types in your public API: api("com.google.guava:guava:31.0.1-android") } 使用非常容易...源码地址: https://github.com/google/guava 使用范例: public void test_Closed(){ // 1点20分 LocalTime start

    1.4K20
    领券