您好,我有两个代码示例
if / else if / else语句
private Object getObj(message) {
if (message.getA() != null)
return message.getA();
else if (message.getB() != null)
return message.getB();
else if (message.getC() != null)
return message.getC();
else return null;
}
Run Code Online (Sandbox Code Playgroud)
可选陈述
private Optional<Object> wrap(Object o){
return Optional.ofNullable(o);
}
private Object getObj(message) {
return wrap(message.getA())
.orElseGet(() -> wrap(message.getB())
.orElseGet(() -> wrap(message.getC())
.orElse(null)));
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,这两者在性能方面如何比较(我在实际代码中大约有15-20条if-else语句)?
值得重构代码的可读性和性能,还是滥用可选选项?
另外,如果if / else-if语句增长到100+,性能损失会是多少?
提前致谢
Iam当前正在尝试创建一个List<Class> classList包含对象的所有类的类。
DemoObject.java
public class DemoObject {
private Integer id;
private String name;
private BigDecimal price;
private Boolean isActive;
private List<NestedDemoObject> nested;
}
Run Code Online (Sandbox Code Playgroud)
NestedDemoObject.java
public class NestedDemoObject {
private Integer id;
private String nameNest;
private Boolean isActive;
}
Run Code Online (Sandbox Code Playgroud)
我要创建的是一种方法public List<Class> getDistinctClasses(Class cl);,您可以将其作为输入,例如DemoObject.class返回一个列表
[DemoObject.class, Integer.class, String.class, BigDecimal.class, Boolean.class, List.class, NestedDemoObject.class]
另一个例子NestedDemoObject.class是
[NestedDemoObject.class, Integer.class, String.class, Boolean.class]
我试图在没有运气的情况下使用.getDeclaredClasses()from Class。有什么方法可以使用Reflection API从对象获取所有嵌套类?
任何帮助或指导表示赞赏。
您好,我目前有这段代码用于查找工作正常的阶乘
public static BigInteger factorial(BigInteger n) {
BigInteger sum = BigInteger.ONE;
for (BigInteger i = BigInteger.ONE; i.compareTo(n) <= 0; i = i.add(BigInteger.ONE)) {
sum = sum.multiply(i);
}
return sum;
}
Run Code Online (Sandbox Code Playgroud)
我想要实现的是将其转换为 aStream<BigInteger>并像这样写
public static BigInteger factorial(BigInteger n) {
return getBigIntegerStream(n).reduce(BigInteger.ONE, BigInteger::multiply);
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是如何获得Stream<BigInteger>类似于如何声明IntStream?
IntStream.range(1, myInt);
Run Code Online (Sandbox Code Playgroud) 我正在尝试http使用 javascript 在 azure 函数上使用节点模块发出 http 请求,但由于某种原因http.request没有接收数据(没有错误打印,就像请求被阻止一样)。azure 配置或代码有什么问题吗?我错过了一些非常明显的东西吗?
代码在本地 js 文件上运行良好
context.log('JavaScript timer trigger function ran!', timeStamp);
按预期打印但context.log("SUCCESS", JSON.parse(data));根本没有打印。
还尝试了不同的库(请求、axios)但没有成功
module.exports = async function (context, myTimer) {
var timeStamp = new Date().toISOString();
if (myTimer.IsPastDue)
{
context.log('JavaScript is running late!');
}
context.log('JavaScript timer trigger function ran!', timeStamp);
const http = require('http');
http.get('http://myAPIurl', (resp) => {
let data = '';
// A chunk of data has been recieved.
resp.on('data', (chunk) => {
data += chunk;
}); …Run Code Online (Sandbox Code Playgroud) java ×3
azure ×1
biginteger ×1
class ×1
http ×1
if-statement ×1
java-8 ×1
java-stream ×1
javascript ×1
node.js ×1
optional ×1
performance ×1
reflection ×1