gpt4 book ai didi

java - 如何使内部类可打包

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:01:25 26 4
gpt4 key购买 nike

我需要知道如何创建一个内部类 Parcelable,以便它的类型的对象可以通过 AIDL 传递到远程服务。我找不到这方面的任何信息。

这是我试图完成的示例代码,但它无法编译,因为 Bar 类中的 CREATOR 不能是静态的(即因为它在内部类中)。我无法将 Bar 设为静态内部类,也无法将 Bar 移出 Foo 类(系统内的其他依赖项)。我还需要知道如何从 AIDL 文件中引用 Bar 类。非常感谢任何帮助。

public class Foo implements Parcelable
{
private int a;

public Foo()
{
}

public Foo(Parcel source)
{
this.a = source.readInt();
}

public int describeContents()
{
return 0;
}

public void writeToParcel(Parcel dest, int flags)
{
dest.writeInt(this.a);
}

public static final Parcelable.Creator<Foo> CREATOR
= new Parcelable.Creator<Foo>()
{
...
}

public class Bar implements Parcelable
{
private int b;

public Bar()
{
}

public Bar(Parcel source)
{
this.b = source.readInt();
}

public int describeContents()
{
return 0;
}

public void writeToParcel(Parcel dest, int flags)
{
dest.writeInt(this.b);
}

public static final Parcelable.Creator<Bar> CREATOR
= new Parcelable.Creator<Bar>()
{
...
}
}
}

最佳答案

我最近遇到了同样的问题,在我的情况下使内部类静态工作。

我仔细阅读了为什么这会真正起作用并且对我来说更有意义,所以我想我会分享。内部类是嵌套在另一个类中并具有对其包含类的实例化的引用的类。通过该引用,它可以像访问包含类本身一样访问包含类成员。因此它绑定(bind)到包含类的实例,因此不能有静态成员(因为它们不会绑定(bind)到包含类)。

将嵌套类声明为静态可将其与包含类的实例分离,因此可以拥有自己的静态变量(以及常规类可以拥有的任何其他变量)。当然,它将无法访问包含类的成员。

关于java - 如何使内部类可打包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9027499/

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