小编Rai*_*ipe的帖子

增强java.util.Date类时,cglib会抛出IllegalArgumentException

我正在尝试java.util.Date使用cglib 进行增强.它没有用,我对cglib没有经验,所以我想知道出了什么问题.

例如,以下代码增强了ArrayList作品:

@Test
public void enhance_ArrayList() {

    Enhancer enhancer = new Enhancer();
    enhancer.setSuperclass(ArrayList.class);
    enhancer.setCallback(new FixedValue() {
                @Override
                public Object loadObject() throws Exception {
                  return "Hello cglib!";
                }
              });

    ArrayList enhanced = (ArrayList)enhancer.create();
}
Run Code Online (Sandbox Code Playgroud)

而以下代码:

@Test
public void enhance_Date() {
    Enhancer enhancer = new Enhancer();
    enhancer.setSuperclass(Date.class);
    enhancer.setCallback(new FixedValue() {
                @Override
                public Object loadObject() throws Exception {
                  return "Hello cglib!";
                }
              });

    Date enhanced = (Date)enhancer.create();
}
Run Code Online (Sandbox Code Playgroud)

导致此异常:

java.lang.IllegalArgumentException  
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at org.objectweb.asm.ClassReader.<init>(Unknown …
Run Code Online (Sandbox Code Playgroud)

java cglib

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

流收集后继续映射

收集后如何继续流映射:

public Bus createBus(List<String> passengers) {
   return passengers.stream()
             .map(name -> new Person(name))
             .collect(Collectors.toList())
             .map(personList -> new Bus(personList))
}
Run Code Online (Sandbox Code Playgroud)

以上显然行不通。如何在不使用方法体中的任何变量的情况下使其优雅地工作?

编辑:构造函数是总线(列出人员)。

java java-8 java-stream

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

为什么没有在正确的行上报告 NPE

运行以下内容:

public class NPESample {

  String value;

  public static void main(String[] args) {
    NPESample npeSample = null;
    "foo"
        .replaceAll(
            "f",
            npeSample.value);
  }
}
Run Code Online (Sandbox Code Playgroud)

会给:

Exception in thread "main" java.lang.NullPointerException
    at NPESample.main(NPESample.java:9)
Run Code Online (Sandbox Code Playgroud)

报告的行 (7) 是"foo"发生 NPE的行而不是实际的行 (10) npeSample.value

为什么是这样?我在调试代码时感到惊讶,并被代码中报告的“错误”行号吓倒。

要重现运行这个:

cat > ./NPESample.java <<DELIM
public class NPESample {

  String value;

  public static void main(String[] args) {
    NPESample npeSample = null;
    "foo"
        .replaceAll(
            "f",
            npeSample.value);
  }
}
DELIM

javac NPESample.java
java NPESample
Run Code Online (Sandbox Code Playgroud)

输出是:

Exception in thread "main" java.lang.NullPointerException
    at …
Run Code Online (Sandbox Code Playgroud)

java nullpointerexception stack-trace

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

在集成测试期间,Grails null id对约束的错误

Grails 2.2.0

我正在尝试创建自定义约束以强制用户只有一个主电子邮件.以下是导致错误的简化代码:

用户域类

class User {

    static hasMany = [emails: Email]

    static constraints = {
    }
}
Run Code Online (Sandbox Code Playgroud)

电子邮件域类

class Email {

    static belongsTo = [user: User]
    String emailAddress
    Boolean isMaster

    static constraints = {

        emailAddress unique: ['user']
        isMaster validator: { val, obj ->
            return !val || Email.findByUserAndIsMaster(obj.user, true) == null
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

整合测试

class EmailTests {

    @Before
    void setUp() {

    }

    @After
    void tearDown() {
        // Tear down logic here
    }

    @Test
    void testSomething() {
        def john = …
Run Code Online (Sandbox Code Playgroud)

grails integration-testing hibernate constraints grails-2.2

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

Reactor:检测空信号以便能够作用于空 Mono

是否有一个运算符或一些好的方法可以使用 Project Reactor Mono 实现 doOnEmpty() 类型的行为?

我希望对操作结果产生副作用(日志记录)。

这就是我现在所拥有的:

myMono
  .map(value -> new Wrapped(value))
  .defaultIfEmpty(new Wrapped(null))
  .doOnEach( ... )
  .flatMap(wrapped -> 
    wrapped.value == null ? 
      Mono.empty() : Mono.just(wrapped.value))
Run Code Online (Sandbox Code Playgroud)

因此,我正在包装实际值,或者在空的情况下创建空包装器。然后包装纸会因副作用而被消耗。

相反,使用 doOnEmpty(Consumer> signalConsumer) 之类的东西会很好。让事情变得更复杂的是,我需要访问信号才能访问上下文(包含日志记录所需的数据)。

有这些答案,但我认为它们不适用或提供对上下文的访问。

所以现在我想到了这一点,也许正确的问题是:

“有没有办法确定 doOnEach(Consumer Signal ) 是否可观察值解析为空?”

java reactor reactive-programming

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

RxJava在空时发出错误

如果Observable在完成之前没有发出一个值,我想"抛出"自定义错误.

让我试着举个例子:

Observable<SomeClass> stream = ...

stream
.filter(...)
.singleOrError(new MyCustomException())
Run Code Online (Sandbox Code Playgroud)

所以我有一个SomeClass对象流.如果fitler()不发出一个元素,我想发出自定义错误.

error-handling exception rx-java rx-java2

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

在域对象约束中使用 grails 配置值

Grails 2.2.0

如何访问 Grails 域对象约束中的自定义配置变量。

我想要这样的东西:

    class User {

         def grailsApplication

         String name

         static constraints = {
             name size: grailsApplication.config.maxlength
         }  

    }
Run Code Online (Sandbox Code Playgroud)

但它因“没有这样的属性:grailsApplication”而失败。我试图通过遵循在域对象和静态范围获取 grails 2.0.0M1 配置信息的建议来使其工作但还没有设法让任何组合工作。

如何访问域对象约束中的配置?另外,如何在域约束的单元测试中处理这种情况?

grails unit-testing config domain-object

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