首页
学习
活动
专区
工具
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.7K31
  • 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。 需要注意的是,这个是没有办法在运行时使用的。

    4.1K20

    深度解密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.3K10

    别再重复造轮子了,推荐使用 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.7K40

    别再造轮子了,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 领取,更多内容陆续奉上。 文章有帮助的话,在看,转发吧。

    99031

    Python|tryexcept捕捉SyntaxError

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

    1.9K10

    Google Guava Cache 使用

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

    1.3K30

    在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

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

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

    90820

    一口气带你踩完五个 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增加/删除元素。

    39720

    在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 的大坑,真的是处处坑啊!

    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.5K31

    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

    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
    领券