舉個例子,我想模仿String對象的功能:如果沒有方法被調用,我可以讓對象返回一個默認值嗎?
String mystring = new String ("Hi there.");
System.out.println(mystring); // prints "Hi there." without calling any methods on String
// (that is what I want with my object)
System.out.println(mystring.toUpperCase()); // prints "HI THERE."
與此開始:
class MyObject
{
private Int value ;
public MyObject (Int value)
{
this.value = value ;
}
public Int getValue ()
{
return this.value ;
}
public Int multiplyBy (Int multiplier)
{
return this.value * multiplier ;
}
}
...如何(或者我可以)做這樣的事情:
MyObject myobject = new MyObject (6) ;
System.out.println(myobject) ; // want to print myobject.value (6)
System.out.println(myobject.multiplyBy (2)) ; // print 12
我對Java很陌生,意識到我可能錯過了一些基本概念,但任何反饋將不勝感激。謝謝。
編輯: 有關覆蓋toString方法的反應是有益的,但它並不完全在做什麼,我腦子裏想的,這裏有我想要的一個更好的例子:
Double mydouble = new Double (20.1) ;
System.out.println (mydouble + 10.1) ; // prints 30.2
我將如何做到這一點與我自己的對象(假設我希望默認值是雙精度)?
再次感謝。
最終編輯(希望): 您的答案足以讓我學習更多關於原始包裝和Autounboxing。我的理解是,沒有辦法做我想做的事情(在這一點上,我會描述爲autounboxing我的對象作爲一個雙),或者至少我會保存它的另一個問題。乾杯。
即使您不知道它已經存在,也會始終調用方法。 ;) –
我想我的問題是,當我打印mydouble + 10.1,允許它評估爲30.2(如果我在我的對象上使用toString它說「操作符+不能應用於MyObject,角度)mydouble上調用什麼方法」 – Synexis
你不能用Java來改變運算符 –