我有一个应用程序,我使用原始数组和列表称为Item.由于遗留原因,这些可以互换使用(我也希望这只是一种类型,但它就是这样).
现在我必须添加一个像这样的新方法,通过for-each循环:
public void something(Item... items) {
for (Item i : items) {
doStuff();
}
}
public void something(List<Item> items) {
for (Item i : items) {
doStuff();
}
}
Run Code Online (Sandbox Code Playgroud)
换句话说,对于原始数组和列表,两次完全相同的方法.有没有办法很好地将它重构为一个方法?
我正在 Chromium 中运行 Raspberry Pi 3,用于自定义 Spotify 界面,该界面显示当前播放的歌曲。虽然这本身有效,但一首歌曲到另一首歌曲之间的过渡非常断断续续,我只是不知道该做什么了。应该发生的是图像和背景在图像完全加载之前不会淡入,因为它不应该被切成两半。
但正如你在这里看到的,情况并非如此(它只显示了几帧,但你可以清楚地看到它是如何首先只显示五分之一的封面艺术然后跳转到完整图像的):https://i .imgur.com/pQsQ26r.mp4
作为参考,这应该是这样的:https : //i.imgur.com/QWY1J38.gif
在普通 PC 上,这已经非常流畅,但我认为 RP3 太慢而无法及时解码。所以,自然地,我以为我的问题会这样解决,但结果仍然是你在第一个视频中看到的:
function changeImage(newImage) {
var preloadImg = new Image();
preloadImg.src = newImage;
preloadImg.decode().then(() => {
let artworkUrl = makeUrl(preloadImg.src);
document.getElementById("artwork-img").style.backgroundImage = artworkUrl;
document.getElementById("background-img").style.backgroundImage = artworkUrl;
setArtworkOpacity("1");
});
setArtworkOpacity("0");
}
function setArtworkOpacity(value) {
// the smooth fade itself is done via CSS "transition: opacity 1s;"
document.getElementById("artwork-img").style.opacity = value;
document.getElementById("background-img").style.opacity = value;
}
Run Code Online (Sandbox Code Playgroud)
我也试过img.onload,结果一样。
这是错误的方法吗?理想情况下,会有一个函数“在图像完全绘制之前不执行”,在这种情况下setArtworkOpacity("1"),我会将其移动到其回调中,但我找不到类似的东西。
我有一些对象的列表,每个对象进一步包含另一个列表,我想计算这些嵌套列表中所有项目的总数。我现在是这样的:
int accu = 0;
for (SomeObject so : objects) {
accu += so.getListWithinObject().size();
}
Run Code Online (Sandbox Code Playgroud)
但是我觉得这可以使用Java 8魔术写成一行。也许甚至都不困难,我只是不知道怎么做。