小编use*_*908的帖子

使用iterator.remove()时UnsupportedOperationException

我试图从a中删除一些元素List,但即使是最简单的例子,就像这个答案或者这个中的元素一样,也行不通.

public static void main(String[] args)
{
    List<String> list = Arrays.asList("1", "2", "3", "4");
    for (Iterator<String> iter = list.listIterator(); iter.hasNext();)
    {
        String a = iter.next();
        if (true)
        {
            iter.remove();
        }
    }
}

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.remove(Unknown Source)
    at java.util.AbstractList$Itr.remove(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

使用正常Iterator而不是a ListIterator没有帮助.我错过了什么?我正在使用java 7.

java iterator

13
推荐指数
2
解决办法
1万
查看次数

使用Java 8在运行时选择具体实现

我不清楚在选择要实例化的实现/子类时放置if/的位置switch,特别是考虑到现在接口可以有静态方法.

假设我有一个服务,一个由接口和几个实现定义的类型.我想最好不要把这个逻辑放在服务中,而是要有工厂方法.但是它应该在界面中还是在另一个类中使用此答案中建议的param-to-type映射?

把它放在界面中似乎很自然:

public interface MyInterface
{
    public void doSomething();

    public static MyInterface create(int param)
    {
        if (param == 0)
            return new ImplA();
        else
            return new ImplB();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后只需从服务中调用它:

public class MyService
{
    public void serveMe(int param)
    {
        MyInterface.create(param).doSomething();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我不知道接口是否知道它的实现,或者父类知道它的子类型是不是很糟糕.所以

  1. 我应该把这个逻辑放在哪里?
  2. 如果我选择一个类型的子类,那会改变很多吗?

java inheritance interface-implementation

11
推荐指数
1
解决办法
2467
查看次数

在级联持续父级之后,子级ID不存在

我有一个User(父)和Home(子)实体在单向一对多关系之后相关.

我的问题是,当向a添加一个新Home的时User,新创建的和持久的Home没有id.这是正常的吗?如果我想要id,我是否需要手动保留孩子?

这些是我的实体:

@Entity
@Table(name = "user")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    @NotNull
    @Column(name = "firstName")
    private String firstName;

    @NotNull
    @Column(name = "lastName")
    private String lastName;

    @NotNull
    @Column(name = "email")
    private String email;

    @OneToMany(targetEntity = Home.class, fetch = FetchType.EAGER, cascade = {CascadeType.ALL}, orphanRemoval = true)
    @JoinColumn(name = "userId", referencedColumnName = "id", nullable = false)
    private List<Home> homes;


    public User() …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa one-to-many

8
推荐指数
1
解决办法
1029
查看次数

如何使Lombok的EqualsAndHashCode与BigDecimal一起使用

我有这里描述的问题。这是因为BigDecimalare等于被破坏,所以在类中具有这样的字段会阻止使用@EqualsAndHashCode。我想出的唯一解决方案就是针对exclude此类领域,但这当然不是最佳选择。

有什么解决办法吗?有什么办法为字段/类型注入自己的比较器?

java equals hashcode bigdecimal lombok

5
推荐指数
2
解决办法
1001
查看次数

杰克逊在第三方课程中无限递归的解决方法

有没有办法以编程方式告诉杰克逊忽略财产?例如,按名称.

我的问题是我正在序列化第三方对象,其中一些具有导致的父/子循环依赖

com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError)
Run Code Online (Sandbox Code Playgroud)

因为我无法修改代码,所以打破循环依赖关系的常用方法对我来说不起作用.

我正在使用ObjectMapperObjectWriter:

ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.setVisibility(new VisibilityChecker.Std(JsonAutoDetect.Visibility.ANY));
writer = mapper.writerWithDefaultPrettyPrinter();
writer.writeValueAsString(object);
Run Code Online (Sandbox Code Playgroud)

而且我知道它们是高度可定制的,就像我在代码片段中包含的序列化包含和可见性一样,但我找不到它们实现类似内容的方式

mapper.ignoreProperty("parent");
Run Code Online (Sandbox Code Playgroud)

java json cyclic-reference jackson

2
推荐指数
1
解决办法
1946
查看次数

MIN()导致MySQL返回全空行而不是0行

我有两个表,services并且extraFees与1xn至相关services.id = extraFees.serviceId。我的问题是,当我执行以下查询一个不存在的组合s.ids.category,我仍然得到1 row(s) returned,与各界NULL。

SELECT 100 + (s.feeRate * MIN(ef.extra)) AS extraFees FROM services s 
LEFT JOIN extraFees ef ON s.id=ef.serviceId WHERE s.id=12 AND s.category='PRG'
Run Code Online (Sandbox Code Playgroud)

我知道罪魁祸首是MIN(),因为如果我将其替换为数字或NULL,0 row(s) returned则会得到,这就是我想要的。

SELECT 100 + (s.feeRate * 5) AS extraFees FROM services s 
LEFT JOIN extraFees ef ON s.id=ef.serviceId WHERE s.id=12 AND s.category='PRG'
SELECT 100 + (s.feeRate * NULL) AS extraFees FROM services s 
LEFT JOIN extraFees …
Run Code Online (Sandbox Code Playgroud)

mysql sql database

2
推荐指数
1
解决办法
108
查看次数

为什么没有Duration.ofWeeks()?

根据这个答案,没有一个Duration.ofMonths()

因为一个月的长度不一样.

但为什么不存在Duration.ofWeeks()呢?一周的长度不变,至少不超过一天的长度.我们确实有一个Duration.ofDays().

那么,这有充分的理由吗?

java datetime java-8 java-time

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

调用库比使用自己的代码慢吗?

我对字节码和编译代码知之甚少.我有一个方法,在一个性能非常关键的路径.使用java的API和apache库有另一种方法.但是我担心涉及两个额外的类会使方法变慢.所以我的问题是,关于性能,使用自己的代码有什么好处吗?

这些是使用我自己的代码和使用库的方法:

public final static List<Long> longArrayToLongList(long[] array)
{
    if (array == null)
    {
        return null;
    }

    List<Long> list = new ArrayList<Long>(array.length);
    for (long value : array)
    {
        list.add(Long.valueOf(value));
    }
    return list;
}

public final static List<Long> longArrayToLongListWithLib(long[] array)
{
    return Arrays.asList(ArrayUtils.toObject(array));
}
Run Code Online (Sandbox Code Playgroud)

java performance

0
推荐指数
1
解决办法
78
查看次数