在尝试使一些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) 我正在编写一个大型应用程序,我试图尽可能多地保存内存并提高性能.因此,当我有一个我知道的字段只有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并且不会根据函数参数自动向下转换或键入.
因此,一旦这种向下转发发生,任何性能或内存增益是否真的显着?或者转换过程如此高效,以至于我仍能获得一些收益?
我想到这个问题的具体用法如下,但它更加普遍.
我有一个自定义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,但是在构造函数中为常量提供值之前,该对象不应该完全形成.那么参考,尽管是最终的,可能会有变化的价值?
免责声明:我确实搜索了这个问题的答案,是的,我确实找到了另一个问题: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方式传递值.
谢谢您的帮助!
我一直在玩这个,到目前为止我还没有找到任何隐藏或欺骗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) 可能重复:
Div为模态 - javascript
有没有办法以某种方式锁定Javascript中的页面,直到函数调用完成?我的想法就像一个半透明的灰色封面,可以防止任何其他用户操作,如鼠标悬停或按钮点击,直到当前请求完成处理.但是,外观与功能并不重要.
我找不到任何能做到这一点的事情.这个问题的大多数"解决方案"只是说等待加载其他HTML元素,直到你完成了你正在执行的任何处理,但在这种特殊情况下,所有选项都已经出现在屏幕上.我希望能够阻止用户从页面执行其他操作,直到当前请求完成.
我一直在学习如何在VIM中进行更复杂的搜索和替换功能,我遇到了这样一个用例:
:%s/$/|/g
Run Code Online (Sandbox Code Playgroud)
这应该找到每一行的结尾,并用垂直管道替换它.但是,当我第一次学习这个时,我假设您必须在替换字符串中添加行尾字符以获得预期结果.即
:%s/$/|$/g
Run Code Online (Sandbox Code Playgroud)
为什么没有它仍然可以保持换行?它不应该用你的字符串替换行的终止字符并在过程中删除它吗?
可以用行尾字符来询问同样的事情^.
以下简单的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) 我们为什么需要applicationContext.xml在Spring?
在什么情况下我们会使用它?你有一个例子吗?
applicationContext.xml和之间有什么区别spring-servlet.xml?
我们如何applicationContext.xml在Spring中与Struts.xmlStruts进行比较以便于理解?
对于所有谈论对象处于"单元化状态"这一事实的人,请参考这个问题的答案,该问题表明可以传递对象引用,解除引用,从中调用方法,并访问字段在构造函数终止并且已分配所有字段(包括 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 ×7
constructor ×2
linux ×2
bash ×1
casting ×1
downcast ×1
end-of-line ×1
html ×1
inline-code ×1
instance ×1
instanceof ×1
javascript ×1
methods ×1
performance ×1
perl ×1
polymorphism ×1
primitive ×1
regex ×1
rest ×1
spring ×1
spring-mvc ×1
swing ×1
this ×1
user-input ×1
vim ×1
wait ×1
web-services ×1