有没有办法在Java中覆盖赋值运算符?
例如,我总是可以这样做:
AJSDate startDate = new AJSDate("20090811");
Run Code Online (Sandbox Code Playgroud)
但我宁愿把它当作:
AJSDate startDate = "20090811";
Run Code Online (Sandbox Code Playgroud)
不,Java不支持运营商的重载.
您甚至无法扩展String来执行以下操作:
class AJSDate extends String {
}
public class HelloWorld {
public static void main(String []args){
AJSDate ajs = "This is a test";
System.out.println(ajs);
}
}
Run Code Online (Sandbox Code Playgroud)
您将收到以下编译时错误:
error: cannot inherit from final String
Run Code Online (Sandbox Code Playgroud)
(用于尝试扩展String - String是一个最终类,这意味着它无法扩展)
error: incompatible types
Run Code Online (Sandbox Code Playgroud)
(对于AJSDate ajs = "This is a test";- 运算=符两侧的操作数不是类型兼容的.)
如果您真的想编写一个允许运算符重载的程序,请使用其他语言,如C++,Scala或Ruby.
一个更小的问题,但是如果你想创建一个具有另一个对象功能的对象(即,扩展另一个对象),那么在风格上,你可能想要用它的父类名来结束它的类名.例如,如果它扩展了类Foo,则将其命名为AJSDateFoo.