私は単純なUserクラスを持っています。ユーザーは、フォロワーのarrayListを持ちます。各フォロワーはユーザーオブジェクトです。今、私はユーザーオブジェクト1とユーザーオブジェクト2を作成します。ユーザーオブジェクト1のユーザーオブジェクト2のフォルダー配列にユーザーオブジェクト1を追加します。したがって、ユーザオブジェクト2には、フォロワユーザオブジェクト1を持つユーザオブジェクト2であるフォロワがあります。firebaseについては、どうすれば@excludeを動作させることができますか?
ユーザオブジェクト1を送信すると、firebaseがクラッシュする理由がわかりません私のfirebaseデータベースに送られました。 gettersとarrayListに@Excludeを置くと何も動かないようです。私のfirebaseのセキュリティを変更する必要がありますか?なぜなら、ユーザーオブジェクト1をフォロワーとして入れ、ユーザーオブジェクト2がフォロワーとしてユーザーオブジェクト1を持っていないことを確認すると、それが働いているからです。しかし、私はユーザー1にユーザー2を従わせたいと思います。ここで
は私の主な活動コードです:ここで
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRef = new Firebase("Fire base reference...");
dummyUser();
}
private void dummyUser()
{
UserFinal finalDummyUser = new UserFinal();
finalDummyUser.setUserName("chris");
finalDummyUser.setLocation("Netherlands");
UserFinal finalDummyUser2 = new UserFinal();
finalDummyUser2.setUserName("Andie");
finalDummyUser2.setLocation("Germany");
finalDummyUser2.addFollower(finalDummyUser);
finalDummyUser.addFollower(finalDummyUser2);
mRef.child("users").child("user3").setValue(finalDummyUser);
}
は私UserFinalクラスである:ここでは
public class UserFinal
{
private String userName;
private String location;
private int userID;
//Arrays
private ArrayList<UserFinal> userFollowers = new ArrayList<>();
//Empty Constructor
public UserFinal()
{
}
//adders
public void addFollower(UserFinal follower)
{
userFollowers.add(follower);
}
//setters
public void setUserName(String userName)
{
this.userName = userName;
}
public void setLocation(String location)
{
this.location = location;
}
public void setUserID(int id)
{
this.userID = id;
}
public void setUserFollowers(ArrayList<UserFinal> followers)
{
this.userFollowers = followers;
}
//getters
public String getUserName()
{
return userName;
}
public String getLocation()
{
return location;
}
public int getUserID()
{
return userID;
}
@Exclude
public ArrayList<UserFinal> getUserFollowers()
{
return userFollowers;
}
}
は私のスタックトレースです:
08-24 19:07:26.549 23384-23384/com.daprlabs.swipedeck E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.daprlabs.swipedeck, PID: 23384
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.daprlabs.swipedeck/com.daprlabs.swipedeck.ActivityCenter}: com.firebase.client.FirebaseException: Failed to parse to snapshot
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2434)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
at android.app.ActivityThread.access$900(ActivityThread.java:157)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5525)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
Caused by: com.firebase.client.FirebaseException: Failed to parse to snapshot
at com.firebase.client.Firebase.setValueInternal(Firebase.java:357)
at com.firebase.client.Firebase.setValue(Firebase.java:248)
at com.daprlabs.swipedeck.ActivityCenter.dummyUser(ActivityCenter.java:165)
at com.daprlabs.swipedeck.ActivityCenter.onCreate(ActivityCenter.java:122)
at android.app.Activity.performCreate(Activity.java:6272)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
at android.app.ActivityThread.access$900(ActivityThread.java:157)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5525)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
Caused by: java.lang.IllegalArgumentException: Infinite recursion (StackOverflowError) (through reference chain: java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowers"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowing"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowers"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowing"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowers"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowing"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowers"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowing"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowers"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowing"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowers"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowing"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowers"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowing"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowers"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowing"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowers"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowing"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowers"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowing"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowers"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowing"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowers"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowing"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowers"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowing"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowers"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowing"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowers"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowing"]->java.util.ArrayList[0]->com.daprlabs.swipedeck.Globals.User["userFollowers"]->java.util.Arra
08-24 19:07:26.577 23384-23394/com.daprlabs.swipedeck W/art: Suspending all threads took: 32.173ms
私はfirebaseを更新する必要がありますか、@JsonIgnoreを使用する必要がありますか? –
それは私が "@JsonIgnore"を置くとき働いた。私が使用していた火災基地は時代遅れだったと思う。ですから、dummyUser2のフォロワーにdummyUser1を追加し、プログラムをクラッシュせずにそれを私のfirebaseデータベースに追加しなくても、それをdummyUser1のフォールバックに追加する方法はありますか? –