小编bef*_*ore的帖子

有没有一种很好的方法来解析用户代理字符串?

我有一个Java模块,User-Agent从最终用户的浏览器接收字符串需要稍微不同的行为取决于浏览器的类型,浏览器的版本,甚至可能是操作系统.如:{"FireFox", "7.0", "Win7"},{"Safari", "3.2", "iOS9"}

我知道User-Agent由于插件安装不同等原因,字符串的格式可能因完全相同的配置而异.

我的问题:

  1. User-Agent井的结构是否定义明确?如果是的话 - 我在哪里可以找到它?(根据我对RFC的理解,这里没有太多的标准化).
  2. 假设#1的问题是No- 是否有正确的方法来解析它以获得我需要的信息?
  3. 除了User-Agent字符串之外,还有更好的方法来获取我需要的信息吗?

重要提示 - 我说的是一个网络应用程序,因此我的数据收集能力仅限于此javascript.

java parsing user-agent

28
推荐指数
3
解决办法
2万
查看次数

为什么Scala没有类型安全等于方法?

由于发明者强调了Scala的类型安全性,我不明白对象(至少从case类)缺少equals方法,它允许仅在具有相同类型的对象上检查相等性.我希望一个===默认情况下实现此行为的方法.当然,Java互操作性必须有一个与Any类型一起工作的方法,但在很多情况下我想只检查相同类型的对象之间的相等性.

我为什么需要它?

例如,我有两个案例类,并从中创建对象

  case class Pos(x: Int, y: Int)
  case class Cube(pos: Pos)

  val startPos = new Pos(0, 0)
  val cubeOnStart = new Cube(startPos)
Run Code Online (Sandbox Code Playgroud)

后来我需要多次检查位置并意外写入

  if (startPos == cubeOnStart) {
    // this code will never be executed, but unfortunately this compiles
  }
Run Code Online (Sandbox Code Playgroud)

但意思是

  if (startPos == cubeOnStart.pos) {
    // this code can be executed if positions are equal
  }
Run Code Online (Sandbox Code Playgroud)

如果一种方法===可用,我会用直觉来使用它.

是否有充分的理由或解释为什么缺少这种方法?

scala equality equals

15
推荐指数
1
解决办法
2402
查看次数

自动生成不可变类和匹配 Java 接口的构建器类

Java 存在哪些工具或库可以interface仅使用访问器方法定义并自动生成不可变的对象类以及用于增量构建新实例或通过创建新实例来更改现有实例的“构建器”类?

输入示例:

public interface Car {
    String getModelName();
    int getWheelCount();
}
Run Code Online (Sandbox Code Playgroud)

输出示例:

import javax.annotation.concurrent.Immutable;
import javax.annotation.concurrent.NotThreadSafe;

@Immutable
public final class ImmutableCar implements Car {

    @NotThreadSafe
    public static final class Builder implements Car {

        private String modelName;
        private int wheelCount;

        public Builder() {
        }

        public Builder(final Car car) {
            modelName = car.getModelName();
            wheelCount = car.getWheelCount();
        }

        public ImmutableCar build() {
            return new ImmutableCar(wheelCount, modelName);
        }

        @Override
        public String getModelName() {
            return modelName;
        }

        @Override
        public int getWheelCount() { …
Run Code Online (Sandbox Code Playgroud)

java design-patterns immutability builder-pattern

5
推荐指数
1
解决办法
3877
查看次数

旧 Springframework util.Assert 的替代品?

当我正要使用一个大约 2 年前的旧类时,我意识到它使用了旧的 Springframework。新框架相当难以导航,而且我不需要它做其他任何事情。

该类是 strtotime(又名“字符串到时间”)的一个很好的实现。https://github.com/collegeman/stringtotime/blob/master/src/main/java/com/clutch/dates/StringToTime.java

当然,当我去编译时,我得到的只是这样:NoClassDefFoundError occured : org/springframework/util/Assert即使我尝试包含一个旧的 spring jar,它也没有什么区别。

该类唯一依赖于它的部分是 .util.Assert:

Assert.notNull(dateTimeString);
Assert.notNull(now);
Assert.notNull(simpleDateFormat);
Run Code Online (Sandbox Code Playgroud)

有谁知道以下情况:

  • 断言源的链接(无法通过 Google 找到它)
  • 替代库
  • 一个更好的类,就像 StringToTime 一样

谢谢!

java validation spring

3
推荐指数
1
解决办法
3975
查看次数