Dar*_*n L 30 java string inheritance
java.lang.String被声明为final,但有没有任何合法的机制或以其他方式扩展它并替换equals(String other)方法?
Jon*_*eet 28
不,绝对不是.如果您想要一些"其他"类型的字符串,请创建另一个可能包含字符串的类型:
public final class OtherString {
private final String underlyingString;
public OtherString(String underlyingString) {
this.underlyingString = underlyingString;
}
// Override equals however you want here
}
Run Code Online (Sandbox Code Playgroud)
Sti*_*itt 20
我猜你最接近的是制作一些实现CharSequence的类.大多数JDK字符串操作方法都接受CharSequence.例如StringBuilder.结合toString()的良好实现,String和valueOf()的各种方法,你可以非常接近自然的替代品.
现在,有办法了。通过manifold,可以扩展每个Java 类。这是字符串的示例:
package extensions.java.lang.String;
import manifold.ext.api.*;
@Extension
public class MyStringExtension {
public static void print(@This String thiz) {
System.out.println(thiz);
}
@Extension
public static String lineSeparator() {
return System.lineSeparator();
}
}
Run Code Online (Sandbox Code Playgroud)
可以按如下方式使用:
String name = "Manifold";
name.print();
String.lineSeparator();
Run Code Online (Sandbox Code Playgroud)
另一个例子可以在这里找到:https ://jaxenter.com/manifold-code-generator-part-2-151762.html
请注意,该流形仍然是 alpha。
| 归档时间: |
|
| 查看次数: |
38838 次 |
| 最近记录: |