验证字符串是否为正数,空/空字符串

用户名

我有一个接受字符串的方法,该方法clientid具有以下要求:

  • clientid可以是大于零的正数。但是,如果它是负数或零,则抛出IllegalArgumentException一条消息。
  • clientid不能为null或空字符串。但是,如果是,则抛出IllegalArgumentException一条消息。
  • clientid也可以是普通字符串。例如-可以是abcdefgh或任何其他字符串。

import static com.google.common.base.Preconditions.checkArgument;

public Builder setClientId(String clientid) {
    checkArgument(!Strings.isNullOrEmpty(clientid), "clientid cannot not be null or an empty string, found '%s'.",
            clientid);
    final Long id = Longs.tryParse(clientid);
    if (id != null) {
        checkArgument(id.longValue() > 0, "clientid must not be negative or zero, found '%s'.", clientid);
    }
    this.clientid = clientid;
    return this;
}

此代码可以正常工作。现在的问题是,我不能使用版本11以上的guava库。如果确实使用它,则final Long id = Longs.tryParse(clientid);会给使用该库的客户造成问题,因此总之,我正在寻找不使用guava的该行的替代品,或者可能与较旧的guava版本11。因为Longs.tryParse方法是在Guava 14或更高版本中添加的。

最好的方法是什么?我们可以从Apache Commons使用什么?

mfulton26

我建议通过重定位类使用Apache Maven Shade插件重新包装Guava 简而言之,您可以将Guava中的软件包重命名为类似的名称,然后在项目中使用它们。com.example.mypackage.com.google.common

这样,您可以使用最新版本的Guava,而不会引起客户的依赖冲突。

这是一个基于以下示例的POM jersey-repackaged-guava

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example.mypackage</groupId>
    <artifactId>repackged-guava-example</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.4.3</version>
                <inherited>true</inherited>
                <configuration>
                    <minimizeJar>false</minimizeJar>
                    <createSourcesJar>true</createSourcesJar>
                    <shadeSourcesContent>true</shadeSourcesContent>
                    <artifactSet>
                        <includes>
                            <include>com.google.guava:guava:*</include>
                        </includes>
                    </artifactSet>
                    <relocations>
                        <relocation>
                            <pattern>com.google.common</pattern>
                            <shadedPattern>${repackaged.prefix}.com.google.common</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>com.google.thirdparty</pattern>
                            <shadedPattern>${repackaged.prefix}.com.google.thirdparty</shadedPattern>
                        </relocation>
                    </relocations>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>19.0</version>
            <optional>true</optional>
        </dependency>
    </dependencies>
    <properties>
        <repackaged.prefix>com.example.mypackage</repackaged.prefix>
    </properties>
</project>

然后依赖repackged-guava-example并更改您的导入:

import com.example.mypackage.com.google.common.primitives.Longs;

请注意,如果您在具有IDE的多模块项目中使用此功能,则需要配置IDE以忽略重新包装的模块的目标类(例如,请参见https://youtrack.jetbrains.com/issue/IDEA-126596)。否则,您的IDE将使用具有原始程序包名称的原始类,而不是重新打包的类。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ImmNotifyIME()是否为空字符串?

来自分类Dev

检查是否为StringBuilder()AppendLine()为空字符串

来自分类Dev

Laravel 字符串验证以允许空字符串

来自分类Dev

空字符串和“”是否是相同的字符串?

来自分类Dev

空字符串验证异常-DynamoDB

来自分类Dev

检查空字符串是否为null?

来自分类Dev

如何检查列表是否为空字符串

来自分类Dev

检查结果是否为空字符串

来自分类Dev

检查结果是否为空字符串

来自分类Dev

PHP:检查变量是否为字符串类型并且不是空字符串?

来自分类Dev

PHP:检查变量是否为字符串类型并且不是空字符串?

来自分类Dev

XHR responseText为空字符串

来自分类Dev

PHP开关为空字符串

来自分类Dev

使用Scanner验证字符串是否为空,并返回空字符串作为有效值

来自分类Dev

使用Jersey验证空字符串和空字符串

来自分类Dev

在Universal Analytics中为用户ID传递空字符串或空字符串

来自分类Dev

将字符串转换为数字,将空字符串或空字符串解释为0

来自分类Dev

替换空字符串

来自分类Dev

加密空字符串

来自分类Dev

空字符串文字

来自分类Dev

如何验证字符串是否为YYYYMMDD格式?

来自分类Dev

验证字符串是否为有效的JavaScript

来自分类Dev

验证字段输入是否为字符串laravel

来自分类Dev

输入字符串的验证是否为Date?

来自分类Dev

JavaScript,如何验证是否为字符串?

来自分类Dev

验证字符串

来自分类Dev

验证字符串

来自分类Dev

字符串中的正数和负数

来自分类Dev

Laravel验证器`required`对于空字符串也失败