[英]Does “return;” at the end of a void method in Java have ANY impact on performance?
[英]java virtual method that does not return void
我希望派生類中的方法重寫CONCRETE基類中的虛擬方法並返回如下內容(即不為空):
public class HelloWorldApp
{
public static void main(String args[])
{
Bar bar = new Bar();
bar.go();
}
}
public class Foo
{
public void go()
{
System.out.print(this.test().toString());
}
protected Integer test()
{
return 1;
}
}
public class Bar extends Foo
{
@Override
protected Integer test()
{
return 2;
}
}
沒有多余的“返回1”,有沒有辦法做到這一點? 在Foo.test()中將永遠不會運行。 顯然它可以正常工作,但似乎我做錯了什么嚴重的事情。
該問題是在問題被更新以聲明基類必須是具體的之前創建的。
如果您希望Foo
的test
方法永遠不會運行,請通過使Foo
類成為abstract
( test
為abstract
實施它。
public abstract class Foo {
public void go() {
System.out.print(this.test().toString());
}
abstract protected Integer test();
}
如果由於某種原因(示例中因為Foo
擴展了一個具體的類)而沒有使Foo.test()
抽象,並且您確定它永遠不會被調用,則拋出運行時異常可能是可取的。沒有合理的默認值:
protected Integer test()
{
throw new UnsupportedOperationException("Calling test on Foo is not supported");
}
Java核心API中有一些示例,例如,參見UnsupportedOperationException-盡管此含義略有不同,但它用於某些集合類型的某些實現實現而某些不實現的可選方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.