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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值