小编aio*_*obe的帖子

有没有办法让参数变为var而不是val?

在Java中调试命令行参数处理时,我习惯这样做

args = new String[] { "some", "new", "arguments" };
Run Code Online (Sandbox Code Playgroud)

(如果您经常更改文件名作为参数,但不想在IDE中浏览某些对话框窗口,则特别有用).这样做的好处是我可以在构建版本时简单地注释掉该行.

因此,当我在Scala中尝试这个时,我发现参数是vals.(我不能var在参数前面写).

  • Q1:这个的理由是什么?
  • Q2:除了这样做之外,有没有明显的解决方法

    val newArgs = if (...) args else Array("some", "new", "arguments")
    
    Run Code Online (Sandbox Code Playgroud)

    并坚持newArgs剩下的主要方法?

scala command-line-arguments method-parameters

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

Java String.split内存泄漏?

我发现使用String.substring已知与内存相关的问题String.split.

使用中是否存在内存泄漏String.split

如果是的话,它的解决方法是什么?


以下链接显示了Java中子字符串的正确用法.

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4513622


还有一篇博客讨论子串中可能的MLK.

http://nflath.com/2009/07/the-dangers-of-stringsubstring/

java memory-leaks

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

在ubuntu中找不到.android文件夹

.android在Ubuntu 哪里可以找到我想要使​​用的debug.keystore

ubuntu android

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

静态方法访问非静态构造函数?

我昨天参加了Java考试.有些东西对我来说似乎很模糊.

规则很简单:

  1. 静态方法不能不能调用非静态方法.
  2. 构造函数是一种没有返回类型的方法.

    public class Main {
        public static void main(String[] args) {
            Main p = new Main();
            k();
        }
    
        protected Main() {
            System.out.print("1234");
        }
    
        protected void k() {
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
    Main p = new Main() line prints 1234
    k() line raises error
    
    Run Code Online (Sandbox Code Playgroud)

那么为什么会这样呢?它不与上面的Java规则冲突吗?

java static constructor ambiguous

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

与Java 8流的生成器模式

我正在使用一个简单的循环构建一个对象:

WebTarget target = getClient().target(u);

for (Entry<String, String> queryParam : queryParams.entrySet()) {
    target = target.queryParam(queryParam.getKey(), queryParam.getValue());
}
Run Code Online (Sandbox Code Playgroud)

我想使用Java8 Stream API做同样的事情,但我无法弄清楚如何做到这一点.让我挣扎的是每次都重新分配目标,所以简单的.forEach()将不起作用.我想我需要使用.collect()或reduce(),因为我正在寻找单个返回值,但此刻我迷路了!

java builder java-8 java-stream

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

什么是"商品软件"?

什么是"商品软件"?(http://valgrind.org/docs/newsome2005.pdf文章中的部分标题)

(我不是英语演讲者,在我的语言中直接将"商品"翻译成软件对我来说没有多大意义.)

一个例子将不胜感激!

terminology commodity

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

如何使用不可变数据类型实现DFS

我试图找出一种遍历图形Scala样式的简洁方法,最好是使用val和不可变数据类型.

给出以下图表,

val graph = Map(0 -> Set(1),
                1 -> Set(2),
                2 -> Set(0, 3, 4),
                3 -> Set(),
                4 -> Set(3))
Run Code Online (Sandbox Code Playgroud)

我希望输出是在给定节点中开始的深度优先遍历.例如,从1开始,应该屈服1 2 3 0 4.

如果没有可变的集合或变量,我似乎无法找到一个很好的方法.任何帮助,将不胜感激.

scala graph-traversal

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

动态Java对象的值(通过反射)

我在这样的类中得到各个字段的名称:

Field[] f = MyClass.class.getDeclaredFields();
Sring str = f[0].toString();
MyClass cl = new MyClass();
Run Code Online (Sandbox Code Playgroud)

现在我想动态地str从对象访问(公共)字段cl.我怎么做?

java reflection

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

JLS是否允许此指令重新排序?

根据Java语言规范(例17.4-1),以下片段(从开始A == B == 0)...

Thread 1             Thread 2
--------             --------
r2 = A;              r1 = B;
B = 1;               A = 2;
Run Code Online (Sandbox Code Playgroud)

......可以导致r2 == 2r1 == 1.这是因为执行的结果B = 1;不依赖于是否r2 = A已经执行,因此JVM可以自由地交换这两个指令的执行顺序.换句话说,规范允许以下交错:

Thread 1             Thread 2
--------             --------
B = 1;
                     r1 = B;
                     A = 2;
r2 = A;
Run Code Online (Sandbox Code Playgroud)

这显然导致r2 == 1r1 == 1.

我的问题:

假设我们稍微调整一下这个例子:

Thread 1             Thread 2
--------             --------
r2 …
Run Code Online (Sandbox Code Playgroud)

java jvm memory-model jls

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

为什么我们允许在java中使用最终的main方法?

任何人都可以告诉我在java中使用main方法作为final.

虽然这在java中是允许的

public static final void main(String[] args) {  



}
Run Code Online (Sandbox Code Playgroud)

我没有看到任何使用它最终的用途.无论如何它是静态的,所以我们不能覆盖它.

java static program-entry-point final

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