小编ast*_*eri的帖子

为什么创建GridBagConstraints的内联版本不起作用?

在尝试使一些Swing代码更具可读性时,我创建了一个如下所示的InlineGridBagConstraints类:

public class InlineGridBagConstraints extends GridBagConstraints {

public InlineGridBagConstraints gridx(int x) {
    gridx = x;
    return this;
}

public InlineGridBagConstraints gridy(int y) {
    gridy = y;
    return this;
}

public InlineGridBagConstraints gridheight(int h) {
    gridheight = h;
    return this;
}

public InlineGridBagConstraints gridwidth(int w) {
    gridwidth = w;
    return this;
}

    // .... and so on, for all fields.

}
Run Code Online (Sandbox Code Playgroud)

目的是改变这种代码:

GridBagConstraints c = new GridBagConstraints();
c.gridx = 2;
c.gridy = 1;
c.gridwidth = 3;
myJPanel.add(myJButton, c);

c.gridx …
Run Code Online (Sandbox Code Playgroud)

java swing inline-code

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

通过向下转换,性能/内存的好处是否无效?

我正在编写一个大型应用程序,我试图尽可能多地保存内存并提高性能.因此,当我有一个我知道的字段只有0 - 10或-100 - 100的值时,我尝试使用short数据类型而不是int.

但是,对于其余的代码来说,这意味着,当我调用这些函数时,我必须将简单的ints 转发为shorts.例如:

方法签名

public void coordinates(short x, short y) ...
Run Code Online (Sandbox Code Playgroud)

方法调用

obj.coordinates((short) 1, (short) 2);
Run Code Online (Sandbox Code Playgroud)

这就像我的整个代码中的所有代码一样,因为文字被视为ints并且不会根据函数参数自动向下转换或键入.

因此,一旦这种向下转发发生,任何性能或内存增益是否真的显着?或者转换过程如此高效,以至于我仍能获得一些收益?

java performance primitive downcast

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

如何在构造函数结束之前引用/处理"this"?

我想到这个问题的具体用法如下,但它更加普遍.

我有一个自定义JFrame类,也可以作为ActionListener其组件.所以我的构造函数看起来像下面这样:

private JButton myButton;

public MyCustomFrame() {
    super();
    myButton.addActionListener(this);
    // ... more stuff
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,这在幕后实际上是如何运作的?如果构造函数是"创建"引用的对象this,那么this在构造函数返回之前我该如何使用?代码编译和工作完全正常(据我所知),所以对象必须已经"存在"在某种意义上,但我担心这可能会导致无法预料的问题.传递一个"部分构造"的引用是否存在任何危险addActionListener()(或者只是对它执行任何逻辑)?或者是否有一些让我安全的幕后魔术?

例如,那些没有默认值但必须由构造函数提供的东西呢?如果我已private final String SOME_VALUE;声明,我理解这应该默认为null,但是在构造函数中为常量提供值之前,该对象不应该完全形成.那么参考,尽管是最终的,可能会有变化的价值?

java constructor this

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

如何从另一个方法将@FormParam传递给RESTful服务?

免责声明:我确实搜索了这个问题的答案,是的,我确实找到了另一个问题:https://stackoverflow.com/questions/10315728/how-to-send-parameters-as-formparam-to-webservice.但首先,这个问题是询问Javascript,而我问的是Java,其次,它无论如何都没有答案.所以关于这个问题......

使用RESTful服务,将@QueryParams 传递到@GET服务中相当容易,因为您可以简单地将变量名称/值对附加到URL并使用它从程序中命中服务器.有没有办法用@FormParams 做这个?

例如,假设我有以下RESTful服务:

@POST
@Produces("application/xml")
@Path("/processInfo")
public String processInfo(@FormParam("userId") String userId,
                          @FormParam("deviceId") String deviceId,
                          @FormParam("comments") String comments) {
    /*
     * Process stuff and return
     */
}
Run Code Online (Sandbox Code Playgroud)

...让我说我的程序中的其他地方还有另一种方法,如下所示:

public void updateValues(String comments) {

    String userId = getUserId();
    String deviceId = getDeviceId();

    /*
     * Send the information to the /processInfo service
     */

}
Run Code Online (Sandbox Code Playgroud)

如何在第二种方法中执行注释掉的操作?

注意:假设这些方法不在同一个类或包中.还假设RESTful服务托管在运行方法的计算机不同的服务器上.因此,您必须访问该方法并以RESTful方式传递值.

谢谢您的帮助!

java rest web-services

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

是否有任何级别的混淆可以“欺骗”instanceof?

我一直在玩这个,到目前为止我还没有找到任何隐藏或欺骗instanceof返回的方法false通过混淆层隐藏它的类型来,但这并不意味着这是不可能的,因为我远离最了解 Java 的人。所以特地来请教专家。

我尝试了以下组合,在每种情况下,instanceof操作员都能够识别对象的真实/基本类型。

public class Test {

    public static void main(String[] args) {
        Object o = new TestObject();
        printType("Base Class", o);

        o = (TestSuperObject)(new TestObject());
        printType("Super Class", o);

        o = (TestInterface)(new TestObject());
        printType("Interface", o);

        o = (TestInterface)((TestSuperObject3)(new TestObject3()));
        printType("Interface on Super Class", o);

        o = (TestSuperObject3)((TestInterface)(new TestObject3()));
        printType("Super Class on Interface", o);
    }


    private static void printType(String testCase, Object o) {
        System.out.println(testCase);
        System.out.println("TestObject:" + (o instanceof TestObject));
        System.out.println("TestObject2:" + (o instanceof TestObject2));
        System.out.println("TestObject3:" …
Run Code Online (Sandbox Code Playgroud)

java polymorphism casting instanceof

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

在Javascript中灰色的"等待"页面?

可能重复:
Div为模态 - javascript

有没有办法以某种方式锁定Javascript中的页面,直到函数调用完成?我的想法就像一个半透明的灰色封面,可以防止任何其他用户操作,如鼠标悬停或按钮点击,直到当前请求完成处理.但是,外观与功能并不重要.

我找不到任何能做到这一点的事情.这个问题的大多数"解决方案"只是说等待加载其他HTML元素,直到你完成了你正在执行的任何处理,但在这种特殊情况下,所有选项都已经出现在屏幕上.我希望能够阻止用户从页面执行其他操作,直到当前请求完成.

html javascript user-interface user-input wait

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

在VIM中,为什么不必在搜索和替换中添加'$'?

我一直在学习如何在VIM中进行更复杂的搜索和替换功能,我遇到了这样一个用例:

:%s/$/|/g
Run Code Online (Sandbox Code Playgroud)

这应该找到每一行的结尾,并用垂直管道替换它.但是,当我第一次学习这个时,我假设您必须在替换字符串中添加行尾字符以获得预期结果.即

:%s/$/|$/g
Run Code Online (Sandbox Code Playgroud)

为什么没有它仍然可以保持换行?它不应该用你的字符串替换行的终止字符并在过程中删除它吗?

可以用行尾字符来询问同样的事情^.

regex linux vim end-of-line

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

如何从glob运算符中捕获权限被拒绝的错误?

以下简单的Perl脚本将列出目录的内容,并将该目录列为脚本的参数.如何在Linux系统上捕获权限被拒绝的错误?目前,如果此脚本在用户没有读取权限的目录上运行,则终端中不会发生任何事情.

#!/bin/env perl

use strict;
use warnings;

sub print_dir {
foreach ( glob "@_/*" )
  {print "$_\n"};
}

print_dir @ARGV
Run Code Online (Sandbox Code Playgroud)

linux bash perl

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

我们什么时候在Spring中使用applicationContext.xml?

我们为什么需要applicationContext.xml在Spring?

在什么情况下我们会使用它?你有一个例子吗?

applicationContext.xml和之间有什么区别spring-servlet.xml

我们如何applicationContext.xml在Spring中与Struts.xmlStruts进行比较以便于理解?

java spring spring-mvc

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

有没有办法在调用另一个构造函数时访问this.toString()的值?

对于所有谈论对象处于"单元化状态"这一事实的人,请参考这个问题的答案,该问题表明可以传递对象引用,解除引用,从中调用方法,并访问字段构造函数终止并且已分配所有字段(包括 final字段)之前.

所以这是用例:

public class Entity {

    private final String name;

    public Entity() {
        this(toString()); //Nope, Chuck Testa
    }

    public Entity(String name) {
        this.name = name;
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器错误是:

在显式调用构造函数时,不能引用实例方法.

请注意,toString()尚未覆盖,并且是默认调用Object.

我当然对这背后的哲学/技术原因感兴趣,所以如果有人能够解释,那将是一个很棒的奖金.但是我正在寻找一种toString()从默认构造函数调用的方法,因为它引用了具有更多参数的更具体的构造函数.实际的用例有点复杂,最终一直指向一个带有四个参数的构造函数,但这并不重要.

我知道我可以做这样的事......

private static final String TO_STRING_CONSTRUCTOR_ARGUMENT = "aflhsdlkfjlkswf";

public Entity() {
    this(TO_STRING_CONSTRUCTOR_ARGUMENT);
}

public Entity(String name) {
    this.name = name == TO_STRING_CONSTRUCTOR_ARGUMENT ? toString() : name;
}
Run Code Online (Sandbox Code Playgroud)

......但它似乎是一个非常不优雅的解决方案.

那么,还有什么方法可以把它拉下来?或者任何建议的最佳做法来处理这种情况?

java methods constructor instance

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