gpt4 book ai didi

java - 是否有扩展/覆盖私有(private)类/方法的替代方法?

转载 作者:搜寻专家 更新时间:2023-11-01 07:58:03 26 4
gpt4 key购买 nike

我想自定义在 Android 中绘制 CalendarView 的方式。以下是 CalendarView.java 在 AOSP 源代码中的样子:

public class CalendarView extends FrameLayout{
private class WeekView extends View{
protected void onDraw(..){
drawBackground(..);
drawWeekNumbersAndDates(..);
drawWeekSeparators(..);
drawSelectedDateVerticalBars(..);
}
private void drawBackground(..){..}
private void drawWeekNumbersAndDates(..){..}
private void drawWeekSeparators(..){..}
private void drawSelectedDateVerticalBars(..){..}
}
}

由于相关位被声明为私有(private),我不能只是扩展/覆盖它们(或者我可以吗?)。复制整个源文件然后进行更改可能会有问题,因为该文件是我不拥有的包 (android.widget) 的一部分。

最佳答案

标准覆盖绝对是不可能的。私有(private)成员甚至继承所以在子类中“覆盖”它们的概念本身没有任何意义。

在您的案例中,作者决定将此类设为私有(private)。这可能对您的特定目的不方便,但由于公共(public)库中可公开访问的所有内容都会自动成为其 API 的一部分,绑定(bind)其作者以维护它以实现向后兼容性,因此做出任何特定代码段都不是轻而易举的决定上市。在这里,作者决定不采取这一步骤。

因此,确实,在这种情况下,通过复制粘贴(如果可行)进行重用可能是实现目标的合适方法。这样做时请注意遵守图书馆许可的条款。

关于java - 是否有扩展/覆盖私有(private)类/方法的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25003404/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com