簡體   English   中英

Java相當於Javascript原型

[英]Java equivalent of Javascript prototype

在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()方法。

今天是星期五,所以讓我們回答這個問題。 我不會詳細介紹(今天是星期五!),但希望您會發現它很有用(一定程度上)。

您當然知道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是其中之一)。 它們通常支持可選的類型輸入,並允許動態方法調用。

所以享受星期五!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM