相关疑难解决方法(0)

Java 8 getter应该返回可选类型吗?

Optional Java 8中引入的类型对于许多开发人员来说是一件新事物.

一个getter方法返回Optional<Foo>类型代替经典的Foo一个好习惯吗?假设值可以null.

java nullable optional java-8

267
推荐指数
4
解决办法
5万
查看次数

使用Java lambda而不是'if else'

使用Java 8,我有这样的代码:

if(element.exist()){
    // Do something
}
Run Code Online (Sandbox Code Playgroud)

我想转换为lambda风格,

element.ifExist(el -> {
    // Do something
});
Run Code Online (Sandbox Code Playgroud)

使用这样的ifExist方法:

public void ifExist(Consumer<Element> consumer) {
    if (exist()) {
        consumer.accept(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

但现在我还有其他情况要打电话:

element.ifExist(el -> {
    // Do something
}).ifNotExist(el -> {
    // Do something
});
Run Code Online (Sandbox Code Playgroud)

我可以写一个类似的ifNotExist,我希望它们是互斥的(如果exist条件为真,则无需检查ifNotExist,因为有时,exists()方法需要花费很多工作量来检查),但我总是要检查两个倍.我怎么能避免这种情况?

也许"存在"这个词会让别人误解我的想法.你可以想象我还需要一些方法:

 ifVisible()
 ifEmpty()
 ifHasAttribute()
Run Code Online (Sandbox Code Playgroud)

很多人说这是个坏主意,但是:

在Java 8中,我们可以使用lambda forEach而不是传统的for循环.在编程中for,if是两个基本的流程控制.如果我们可以使用lambda作为for循环,为什么使用lambda是个if坏主意?

for (Element element : list) {
    element.doSomething();
}

list.forEach(Element::doSomething);
Run Code Online (Sandbox Code Playgroud)

在Java 8中,有Optional …

java lambda if-statement java-8

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

Java模板功能

我有一个函数,有时必须返回Date一次DateTime(Joda-Time).

static public <T extends Object> T convertTimeForServer(DateTime toSave) {
        DateTime temp = null;
        try {
            temp = toSave.withZone(DateTimeZone.forID(getServerTimeZone()));
        } catch (Exception e) {
        }

        T toReturn = null;
        if (toReturn.getClass().equals(temp)) {
            return (T) temp;//Return DATETIME
        } else {
            return (T) temp.toDate();//Return DATE
        }
}
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?
如何使用它?

像这样(timerHelper是类的名称):

    DateTime t = timerHelper.<DateTime>convertTimeForServer(new DateTime());
    Date t2 = timerHelper.<Date>convertTimeForServer(new DateTime());
    or
    DateTime t = (DateTime)timerHelper.convertTimeForServer(new DateTime());
    Date t2 = (Date)timerHelper.convertTimeForServer(new DateTime());
Run Code Online (Sandbox Code Playgroud)

以及如何使用此功能?

static public <T extends Object> T …
Run Code Online (Sandbox Code Playgroud)

java generics

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

标签 统计

java ×3

java-8 ×2

generics ×1

if-statement ×1

lambda ×1

nullable ×1

optional ×1