我试图从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.
我不清楚在选择要实例化的实现/子类时放置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)
但是我不知道接口是否知道它的实现,或者父类知道它的子类型是不是很糟糕.所以
我有一个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) 我有这里描述的问题。这是因为BigDecimalare等于被破坏,所以在类中具有这样的字段会阻止使用@EqualsAndHashCode。我想出的唯一解决方案就是针对exclude此类领域,但这当然不是最佳选择。
有什么解决办法吗?有什么办法为字段/类型注入自己的比较器?
有没有办法以编程方式告诉杰克逊忽略财产?例如,按名称.
我的问题是我正在序列化第三方对象,其中一些具有导致的父/子循环依赖
com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError)
Run Code Online (Sandbox Code Playgroud)
因为我无法修改代码,所以打破循环依赖关系的常用方法对我来说不起作用.
我正在使用ObjectMapper和ObjectWriter:
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) 我有两个表,services并且extraFees与1xn至相关services.id = extraFees.serviceId。我的问题是,当我执行以下查询一个不存在的组合s.id和s.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) 根据这个答案,没有一个Duration.ofMonths()
因为一个月的长度不一样.
但为什么不存在Duration.ofWeeks()呢?一周的长度不变,至少不超过一天的长度.我们确实有一个Duration.ofDays().
那么,这有充分的理由吗?
我对字节码和编译代码知之甚少.我有一个方法,在一个性能非常关键的路径.使用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 ×7
bigdecimal ×1
database ×1
datetime ×1
equals ×1
hashcode ×1
hibernate ×1
inheritance ×1
iterator ×1
jackson ×1
java-8 ×1
java-time ×1
jpa ×1
json ×1
lombok ×1
mysql ×1
one-to-many ×1
performance ×1
sql ×1