我怎么可能在Java中实现单位转换器??? 我在想一个抽象的基类:
public abstract class Unit {
...
public void convertTo(Unit unit);
}
Run Code Online (Sandbox Code Playgroud)
然后让每个类都像Meter Kilometer Inch Centimeter Millimeter...派生自那个基本单元类.所有长度单位都在一个名为com.unitconverter.distance的包中,然后是一个包,com.unitconverter.energy,用于能量等等.那么这是实现单位转换器的最佳方法吗?或者有更好或更简单的方法吗?
我们有一个接收SOAP请求的Java应用程序,在很多请求之后我们注意到GC停止了全世界卸载很多GeneratedSerializationConstructorAccessor类.这是一个很大的性能影响.
有谁知道如何避免这种情况或者至少显着减少创建的GeneratedSerializationConstructorAccessor类的数量?
格式化长throws列表的Java样式是什么?
假设我有这个:
public void some() throws IOException, ClassNotFoundException, NoSuchMethodException,InvocationTargetException, IllegalAccessException {
}
Run Code Online (Sandbox Code Playgroud)
应该是:
public void some()
throws IOException,
ClassNotFoundException,
NoSuchMethodException,
InvocationTargetException,
IllegalAccessException {
}
Run Code Online (Sandbox Code Playgroud)
,
public void some() throws IOException,ClassNotFoundException,
NoSuchMethodException,InvocationTargetException,
IllegalAccessException {
}
Run Code Online (Sandbox Code Playgroud)
或者是其他东西?
最终我得到了答案,但它让我困惑了一段时间.
为什么以下代码在运行时抛出NullPointerException?
import java.util.*;
class WhyNullPointerException {
public static void main( String [] args ){
// Create a map
Map<String,Integer> m = new HashMap<String,Integer>();
// Get the previous value, obviously null.
Integer a = m.get( "oscar" );
// If a is null put 1, else increase a
int p = a == null ?
m.put( "oscar", 1) :
m.put( "oscar", a++ ); // Stacktrace reports Npe in this line
}
}
Run Code Online (Sandbox Code Playgroud) 一个愚蠢的句法问题:
如果赋值运算符实际上是一个函数,比如
def value=(x)
@value = x
end
Run Code Online (Sandbox Code Playgroud)
如果左侧操作数和"="之间没有空格,那么为什么可以将赋值作为test.value = x(带空格),但方法定义不能写为:
def value = (x)
@value = x
end
Run Code Online (Sandbox Code Playgroud)
与空间.这只是解析器决定的语法吗?
我正在尝试解析另一个服务器中的WSDL文件,但在整个文档中都有硬编码的"localhost".
当我拿到它时,显然该程序抱怨"连接被拒绝",因为我的机器中没有运行.
我的问题是:是否可以使用webproxy(如fiddler)将这些localhost请求重定向到我的其他服务器,以便完成WSDL引用?
: - /
谢谢
ps我可以随时修复遥控器"wsdl",但负责人将在这里待到下周,我想今天开始工作.
我不是Java人,所以我问自己这意味着什么:
public Button(Light light) {
this.light = light;
}
Run Code Online (Sandbox Code Playgroud)
按钮是一种方法吗?我问自己,因为它需要一个输入参数灯.但如果它是一种方法,为什么它会以大写字母开头并且没有返回数据类型?
这是一个完整的例子:
public class Button {
private Light light;
public Button(Light light) {
this.light = light;
}
public void press() {
light.turnOn();
}
}
Run Code Online (Sandbox Code Playgroud)
我知道,这个问题真是微不足道.但是,我与Java没有任何关系,也没有找到上面关于Button的描述.我只是感兴趣.
如果可以为应该抛出已检查异常的方法写入字节代码?
例如,除非方法声明它抛出已检查的异常,否则以下Java类不会编译:
public class CheckedExceptionJava {
public Class<?> testChecked(String s) throws ClassNotFoundException {
return Class.forName(s);
}
}
Run Code Online (Sandbox Code Playgroud)
虽然以下Scala等价物(因为Scala没有检查异常):
class CheckedException {
def testChecked( s : String ) = Class.forName( s )
}
Run Code Online (Sandbox Code Playgroud)
即使生成的字节码几乎相同:
Compiled from "CheckedExceptionJava.java"
public class CheckedExceptionJava extends java.lang.Object{
public CheckedExceptionJava();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public java.lang.Class testChecked(java.lang.String) throws java.lang.ClassNotFoundException;
Code:
0: aload_1
1: invokestatic #2; //Method java/lang/Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
4: areturn
}
Compiled from "CheckedException.scala"
public class CheckedException extends java.lang.Object implements scala.ScalaObject{
public …Run Code Online (Sandbox Code Playgroud) 我知道我可以填充空格:
String.format("%6s", "abc"); // ___abc ( three spaces before abc
Run Code Online (Sandbox Code Playgroud)
但我似乎无法找到如何生产:
000abc
Run Code Online (Sandbox Code Playgroud)
编辑:
我%06s先问过这个问题.只是在更多(未经验证的)答案出现之前让你知道.
目前我有:String.format("%6s", data ).replace(' ', '0' ) 但我认为必须存在更好的方法.