作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要知道如何创建一个内部类 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/
我是一名优秀的程序员,十分优秀!