小编Nat*_*han的帖子

在Stream.map()中将Consumer转换为Runnable

我正在尝试将a转换Consumer为a Runnable.下面的代码并不会产生在Eclipse IDE中任何编译器错误.

Consumer<Object> consumer;
Runnable runnable;
Object value;

...
runnable = () -> consumer.accept(value);
Run Code Online (Sandbox Code Playgroud)

以下代码在Eclipse IDE中生成编译器错误.

ArrayList<Consumer<Object>> list;
Object value;

...

list.
   stream().
   map(consumer -> () -> consumer.accept(value));
Run Code Online (Sandbox Code Playgroud)

错误是:

Type mismatch: Can not convert from Stream<Object> to <unknown>.
The target type of this expression must be a functional interface.
Run Code Online (Sandbox Code Playgroud)

我如何帮助编译器将a转换ConsumerRunnable

以下代码修复了该问题,但非常详细.

map(consumer -> (Runnable) (() -> consumer.accept(value)));
Run Code Online (Sandbox Code Playgroud)

有没有更简洁的方法来做到这一点?我知道我可以创建一个接受a Consumer并返回a 的静态方法Runnable,但我不认为这更简洁.

java eclipse java-stream functional-interface

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

如何将 Opcodes 中 ASM 的 API 版本映射到 Java 版本?

ASMClassVisitor构造函数需要传递一个OpcodesASM4ASM5ASM6ASM7ASM8ASM9

我如何知道ASM#每个版本的 Java 使用哪个?我ASM#将在 Java 8 中使用什么?我ASM#将在 Java 11 中使用什么?

java version java-bytecode-asm

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

具有相同名称的多个进程

我有一个在Linux 2.6.13和WindRiver Linux 3.0上运行的应用程序.在Linux 2.6.13当我做...

ps -eaf | grep myapplication
Run Code Online (Sandbox Code Playgroud)

...输出显示'myapplication'的多个条目.

如果我在WindRiver Linux 3.0中提供相同的命令,输出只显示'myapplication'的一个条目

差异与操作系统的差异有关吗?请告诉我原因?

linux process ps

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

动态更新当前显示的工具提示

我正在尝试获得一个显示任务当前进度的工具提示。所以,我想的是,工具提示文本的变化显示工具提示。但是,当我调用setToolTipText()显示的文本时,显示的文本保持不变,直到我从工具提示组件中退出鼠标并再次输入。而调用setToolTipText(null)before 不会改变任何东西。

java swing dynamic tooltip

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

为什么 ASM 无法找出适合我的生成类的正确最大值?

我正在使用 ASM 3.1 生成一个虚拟类。它只有一个简单的构造函数,没有其他方法:

public class TestAsm {

public static void main(String... args) throws Throwable {
    ClassWriter sw = new ClassWriter(ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS);
    sw.visit(Opcodes.V1_6, Opcodes.ACC_PUBLIC | Opcodes.ACC_SUPER, "test/SubCls", null, "test/SuperCls", null);
    sw.visitField(Opcodes.ACC_PUBLIC, "i", "I", null, null);

    MethodVisitor mv = sw.visitMethod(0, "<init>", "()V", null, null);
    // mv.visitMaxs(2, 1);
    mv.visitCode();
    mv.visitVarInsn(Opcodes.ALOAD, 0);
    mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "test/SuperCls", "<init>", "()V");
    mv.visitVarInsn(Opcodes.ALOAD, 0);
    mv.visitInsn(Opcodes.ICONST_2);
    mv.visitFieldInsn(Opcodes.PUTFIELD, "test/SubCls", "i", "I");
    mv.visitInsn(Opcodes.RETURN);
    mv.visitEnd();

    sw.visitEnd();
    byte[] cls = sw.toByteArray();
    FileOutputStream fos = new FileOutputStream("bin/test/SubCls.class");
    fos.write(cls);
    fos.close();

    SuperCls o = (SuperCls) Class.forName("test.SubCls").newInstance(); …
Run Code Online (Sandbox Code Playgroud)

java bytecode java-bytecode-asm

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

Nullsoft脚本安装系统(NSIS)安装程序 - 静默模式

如何使Nullsoft脚本安装系统(NSIS)安装程序无声?

来自维基百科:

"Nullsoft Scriptable Install System(NSIS),est un logiciellibrecontrôlablepascript,qui permetlacréationd'installateurspour Windows.IlaétéinitialementdéveloppéparNullsoft,lasociétécréatricedeWinamp.NSIS est une alternative aux produits commerciaux,comme的InstallShield.

NSIS编译器程序makensis将以下示例中的脚本编译为可执行安装程序.脚本中的每一行都包含一个命令."

# Example script

Name "Example1"
OutFile "example1.exe"
InstallDir "$PROGRAMFILES\Example1"
Page Directory
Page InstFiles
Section
  SetOutPath $INSTDIR
  File ..\makensis.exe
SectionEnd  
Run Code Online (Sandbox Code Playgroud)

installer nsis build silent silent-installer

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

避免 Instant.toEpochMilli() 算术溢出

调用 JDKInstant.toEpochMilli()可能会导致算术上溢/下溢(例如Instant.MAX.toEpochMilli()Instant.MIN.toEpochMilli())。我正在寻找一种避免算术溢出的简单方法,只需使用Long.MAX_VALUE. 这是我当前的代码。

long seconds, millis;

seconds = deadline.getEpochSecond();

if (seconds > Long.MAX_VALUE / 1000 - 1)
   millis = Long.MAX_VALUE;
else if (seconds < Long.MIN_VALUE / 1000 + 1)
   millis = Long.MIN_VALUE;
else
   millis = deadline.toEpochMilli();
Run Code Online (Sandbox Code Playgroud)

似乎必须有一种更清晰/更清晰的方法来实现这一点。你将如何实现这个逻辑?

我必须关心上溢/下溢,因为Instant.MAXInstant.MIN被传递给此代码所在的方法。

java time arithmetic-overflow

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

如何在Java Swing中绘制一条水平线

如何使用Java Swing库绘制水平线?我知道我需要覆盖,paint(Graphics g)但我不确定该方法应该放什么.

@Override
public void paint(Graphics g)
{
   // What goes here?
}
Run Code Online (Sandbox Code Playgroud)

java user-interface swing

2
推荐指数
1
解决办法
2万
查看次数

在Java中将字节流转换为字符流

是否有一个类可以通过指定编码,将字节流提供给它并从中获取字符流来创建它?重点是我想通过不同时在内存中同时拥有整个字节流数据和整个字符流数据来节省内存.

就像是:

Something s = new Something("utf-8");
s.write(buffer, 0, buffer.length); // it converts the bytes directly to characters internally, so we don't store both
// ... several more s.write() calls
s.close(); // or not needed

String text = s.getString();
// or
char[] text = s.getCharArray();
Run Code Online (Sandbox Code Playgroud)

那是什么Something

java arrays encoding character stream

2
推荐指数
1
解决办法
6392
查看次数

使用java swing对JTabbedPane中的选项卡进行着色

我想改变我的标签的背景颜色JTabbedPane.我试着JTabbedPane.setBackgroudAt(0, Color.GRAY)JTabbedPane.setBackgroud(Color.GRAY)和前景也一样,但没有任何反应.我更改了选项卡内面板的背景,仍然没有.

在此输入图像描述

编辑1:我正在使用,UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");如果这可以帮助解决方案

编辑2:链接到示例,https://www.dropbox.com/s/0krn9vikvkq46mz/JavaApplication4.rar

java swing jtabbedpane

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