当前位置:  开发笔记 > 编程语言 > 正文

Java字符串参数

如何解决《Java字符串参数》经验,为你挑选了3个好方法。

我来自.net背景,想知道创建一个方法的可接受方式,该方法返回一个布尔值并修改一个通过参数传入的字符串.我理解字符串在Java中是不可变的,因此下面的代码片段将始终产生一个空字符串.我被限制只返回布尔值.不能抛出例外情况.如果我需要将String类包装在一个StringHolder中,我可以在哪个包中找到它.

public static void DoStuff()
{
    String msg = "";
    if (GetMessage(msg))
    {
       System.out.println(msg);
    }
}

Michael Borg.. 9

使用java.lang.StringBuilder - 基本上是一个可变的String.但是,返回修改后的String会更安全,更"Java风格".



1> Michael Borg..:

使用java.lang.StringBuilder - 基本上是一个可变的String.但是,返回修改后的String会更安全,更"Java风格".



2> Tom Hawtin -..:

我强烈建议你不要使用StringBuilder,持有者或类似的东西.他们是黑客.您希望使用字符串,而不是构建器.

最明显的方法是返回包含要返回的数据的对象.大卫的[bombe.livejournal.com]解决方案涵盖了这一点,所以我不再重复了.但是,我建议不要试图使它成为通用的数据球,使其具体化.使它像一个对象,也许它甚至可以成长为真实的行为.(如果你真的想去城里,隐藏构造函数并改为给它一个静态的创建方法.)

第二种方法,在Java中得不到很好的支持,就是反转调用.而不是返回结果,告诉回调结果.

(更重要的)使用代码会是这样的(它看起来有点奇怪,因为它不是特定的,也不是通用的):

String userMessage = thing.doStuff(new StuffHandler() {
    public String stuff(boolean success, String message) {
        return message+" was "+(success ? "succesful" : "unsuccesful");
    }
});

实现类似于:

public interface StuffHandler {
    T stuff(boolean success, String message);
}

[...]

    public  T doStuff(StuffHandler handler) {
        handler.stuff(isSuccess(), getMessage());
    }

第三种方法就是将方法分解为两种.这可能是也可能是不可行的.



3> Bombe..:

首先,我可能不会有这些要求.我相信他们可以解决.如果您不想这样做,我建议您为两个结果返回一个容器对象:

public class ResultContainer {
    private final boolean success;
    private final String result;
    public ResultContainer(boolean success, String result) {
        this.success = success;
        this.result = result;
    }
    public boolean isSuccess() { return success; }
    public String getResult() { return result; }
}

在您的主要代码中:

ResultContainer resultContainer = GetMessage(message);
if (resultContainer.isSuccess()) {
    System.out.println(resultContainer.getResult());
}

GetMessage()显然会创建一个新的a实例ResultContainer并返回它,并填充返回值.

(使用Generics ResultContainer作为读者的练习.)

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有