小编pfu*_*her的帖子

Collectors.toMap()keyMapper - 更简洁的表达方式?

我试图在下面的Collectors.toMap()调用中为"keyMapper"函数参数提供一个更简洁的表达式:

List<Person> roster = ...;

Map<String, Person> map = 
    roster
        .stream()
        .collect(
            Collectors.toMap(
                new Function<Person, String>() { 
                    public String apply(Person p) { return p.getLast(); } 
                },
                Function.<Person>identity()));
Run Code Online (Sandbox Code Playgroud)

似乎我应该能够使用lambda表达式来内联它,但我无法想出一个编译它的人.(我对lambdas很新,所以这并不奇怪.)

谢谢.

- >更新:

如接受的答案所述

Person::getLast
Run Code Online (Sandbox Code Playgroud)

是我在寻找的东西,也是我尝试过的东西.然而,Eclipse 4.3的BETA_8每晚构建是问题 - 它标记为错误.从命令行编译时(我应该在发布之前完成),它起作用了.所以,是时候用eclipse.org提交bug了.

谢谢.

java collections lambda java-8 java-stream

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

Gradle 同步失败:无法使字段 private static final java.util.Map java.lang.ProcessEnvironment.theCaseInsensitiveEnvironment 可访问

我尝试构建我的 gradle 项目,但出现以下错误:

1:36 PM Gradle sync failed: Unable to make field private static final java.util.Map java.lang.ProcessEnvironment.theCaseInsensitiveEnvironment accessible: module java.base does not "opens java.lang" to unnamed module @7d417077 (5 s 556 ms)

构建.gradle文件

不,我不知道 gradle,不,我不打算学习它,但我别无选择。提前致谢

java gradle minecraft minecraft-forge

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

Javafxpackager:你如何设置"基础JDK"?

当我运行javafxpackager时,我收到以下警告/信息:

No base JDK. Package will use system JRE.
Run Code Online (Sandbox Code Playgroud)

部署JavaFX应用程序的文档中不清楚 如何指定替代JDK.它没有选择,我可以看到(也许我是盲目的).它是系统属性吗?

谢谢.

javafx-8

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

如何设置从属gradle任务的属性

我想设置一个"通用"任务,它将为许多平台构建应用程序包(它使用javafxpackager).任务的机制适用于创建所有平台捆绑包,但不同之处在于任务使用的各种属性.

我原本以为我会为每个平台创建单独的更高级别任务,在这些平台中将设置特定于平台的属性,然后在通用任务中调用/ execute /(替换正确的gradle术语).例如,

task buildMacBundle(dependsOn: ['macBundleConfig', 'buildAppBundle']) << {
  // set Mac-specific properties (project.ext properties?)
  // call/invoke/execute or whatever the mechanism is called, buildAppBundle task
    buildAppBundle.mustRunAfter macBundleConfig
    println "building a Mac app bundle"
}

task macBundleConfig << {
    println "executing macBundleConfig"
    ext {
        nativeType = "dmg"
        bundleAppName = 'My App'
    }
    delete ("${buildDir.name}/dist/${bundleAppName}.dmg")
}


task buildWindowsBundle << {
  // omitted for brevity, but just like buildMacBundle except for property values
}

task buildAppBundle << {

    println "nativeType: ${project.ext.nativeType}" // …
Run Code Online (Sandbox Code Playgroud)

gradle

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

如何在 SwiftUI iPad Playground 中引用图像文件?

我已将相册中的图像 (jpg) 添加到 UserResources 文件夹(通过 Playground 应用程序右上角的 + 菜单)。声明 SwiftUI 图像时如何引用该文件?

我尝试使用整个路径:

let path: String = { Bundle.main.paths(forResourcesOfType: "JPG", inDirectory: nil)[0] }()
Run Code Online (Sandbox Code Playgroud)

它似乎给了我所需文件的路径,“PICT0024.JPG”:

/var/mobile/Containers/Data/PluginKitPlugin/F01FA67E-97CA-4590-915A-C8071507C6E0/Library/Application Support/Main Module Resources Bundles/55929C8C-46C9-4691-B86B-389D1473E9A8.bundle/Contents/Resources/PICT0024.JPG
Run Code Online (Sandbox Code Playgroud)

然后我声明:

Image(systemName: path)
Run Code Online (Sandbox Code Playgroud)

但是没有显示图像。我可能有错误的参考,但无法弄清楚我需要指定什么。

哦,就这个

Image(“PICT0024.JPG”) 
Run Code Online (Sandbox Code Playgroud)

也不起作用。

引用该图像文件的正确方法是什么?

请只回答 SwiftUI 5 和在 iPad 上编辑。目前使用 XCode 不是一种选择。

谢谢。

image ipad swift-playground swiftui

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

使用正则表达式模式使用 sed/awk 从文件中删除多行

Eclipse 的“Generate Entities from Tables...”JPA 代码生成器坚持创建@Id 字段和关联的getter/setter 方法,尽管这些是在我在向导步骤中指定的超类中定义的。

为了解决这个问题,我的想法是编写一个脚本来删除违规行并以其他方式清理生成的文件。(是的,我可以使用 Eclipse 中的“查找/替换”对话框手动执行此操作,但我想自动化整个更改集,因为我将在处理各种模型时多次执行此代码生成/清理例程。)

问题是我找不到正确的正则表达式模式来匹配在 awk 或 sed 中使用的多行。我创建的正则表达式模式适用于 Eclipse 和 TextWrangler 的搜索对话框,但不适用于 awk 或 sed。

以下是我想删除的多行文本(当然,在对 awk/sed 的单独调用中):

    @Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(unique=true, nullable=false)
private String id;
Run Code Online (Sandbox Code Playgroud)

    public String getId() {
    return this.id;
}

public void setId(String id) {
    this.id = id;
}
Run Code Online (Sandbox Code Playgroud)

请注意,上面引用的代码中的每个非空行都以 \t 字符开头,即使粘贴到此处时它不存在。

例如,要删除 getter/setter 行,我尝试过

awk '!/\tpublic String getId\(\) \{\r\t\treturn this\.id;\r\t\}\r\r\tpublic void setId\(String id\) \{\r\t\tthis\.id = id;\r\t\}\r/' $file > temp.txt && mv temp.txt $file
Run Code Online (Sandbox Code Playgroud)

或缩短版本

awk '!/^\tpublic …
Run Code Online (Sandbox Code Playgroud)

regex awk sed

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