在JavaScript中,您可以这样做。
String.prototype.removeNumericalCharacters = function(){
...code...
}
或
Number.prototype.addTwo = function(){
...code...
}
var a = 5;
a.addTwo();
//a is now 7
有没有办法在Java中做类似的事情? (我不是指实际的功能,只是以此为例)
Java中的一个例子是
int a = 5;
a.addTwo();
//A is now 7
我的问题是如何定义.addTwo()方法。
答案 0 :(得分:2)
星期五,让我们回答这个问题。我不打算深入了解很多细节(这是星期五!)但希望你能发现它有用(在某种程度上)。
您当然知道Java对象没有原型。如果要将字段或方法添加到Java类,则有两个选项。您可以扩展现有类并将方法/字段添加到它中:
public class A {
}
public class B extends A {
int addTwo () {...};
}
然而,这并没有改变父类。示例中的类A
的对象仍然没有方法addTwo
。
第二种方法是动态地改变类(你可以使用像javassist
这样的东西)和方法/字段。一切都很好但是要使用这些新的方法/字段,你必须使用反射。 Java是强类型的,需要在编译期间了解类的可用方法和字段。
最后,当事情变得非常粗糙时 - 原始类型,在您的实例int
中,是硬连线的'进入JVM并且无法更改。那你的例子
int a = 5;
a.addTwo();
在Java中是不可能的。您可以在JVM上使用动态语言获得更多运气(Groovy就是其中之一)。他们通常支持可选输入并允许动态方法调用。
星期五享受!