java支持接口吗_java – 支持专用接口方法
此支持允許接口的非抽象方法在它們之間共享代碼.私有方法可以是靜態的或實例的.
接口的私有方法可以是抽象的還是默認的?
我可以問一個例子,“私有靜態接口方法”在代碼方面是否有用?
解決方法:
不,接口中的私有方法應該被設計用于在接口實現內部的一段代碼中進行分組.由于這些屬于實現(由主體組成)而不是聲明,因此在定義時既不能是默認也不是抽象.
私有方法是靜態方法或使用private關鍵字聲明的非默認實例方法.您不能將default方法聲明為私有方法,因為默認方法可以從實現其聲明接口的類中調用.
私有靜態方法在定義其實現時從接口的靜態方法中抽象出一段共同的代碼是很有用的.
接口中的私有靜態方法的示例可以如下.考慮一個對象,StackOverflow上的Question.java定義為:
class Question {
int votes;
long created;
}
和一個建議按功能分類的界面,如StackOverflowTag所列問題所示:
public interface StackOverflowTag {
static List sortByNewest(List questions) {
return sortBy("NEWEST", questions);
}
static List sortByVotes(List questions) {
return sortBy("VOTE", questions);
}
//... other sortBy methods
private static List sortBy(String sortByType, List questions) {
if (sortByType.equals("VOTE")) {
// sort by votes
}
if (sortByType.equals("NEWEST")) {
// sort using the created timestamp
}
return questions;
}
}
這里接口的私有靜態方法sortBy在內部實現基于sortOrderType的排序,該接口通過接口的兩個公共靜態方法共享實現,StackOverflowTagConsumer可以進一步使用這些方法可以簡單地訪問這些接口靜態方法:
public class StackOverFlowTagConsumer {
public static void main(String[] args) {
List currentQuestions = new ArrayList<>();
// if some action to sort by votes
displaySortedByVotes(currentQuestions);
// if another action to sort by newest
displaySortedByNewest(currentQuestions);
}
private static void displaySortedByVotes(List currentQuestions) {
System.out.println(StackOverflowTag.sortByVotes(currentQuestions));
}
private static void displaySortedByNewest(List currentQuestions) {
System.out.println(StackOverflowTag.sortByNewest(currentQuestions));
}
}
標簽:java,interface,java-9,private-methods
來源: https://codeday.me/bug/20191002/1841171.html
總結
以上是生活随笔為你收集整理的java支持接口吗_java – 支持专用接口方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 限制日期格式_Java日期格式
- 下一篇: svn导出java项目_【SVN】导出项