Никога не съм виждал това преди. Имам следния код, обикновен вложен цикъл, приписващ обект от един ArrayList на обект от друг.
Но вътре във вътрешния цикъл обектът има някои (не всички) дублиращи се променливи с нулеви стойности?!? Какво греша?!?
Първото изображение показва локалната променлива "член", препратка към обект вътре в ArrayList "членове". Това е обектът с дублиращи се променливи с нулеви стойности.
Второто изображение показва другия обект "предложение", изглежда така, както някой би очаквал.
Код по-долу. Помогне?
public static void setMembersForOffers(ArrayList<WPMemberPost> members, ArrayList<WPOfferPost> offers)
{
int memberCount = members.size();
int offerCount = offers.size();
for (int i=0; i<offerCount; i++)
{
WPOfferPost offer = offers.get(i);
if (offer.memberIdentifier != null)
{
for (int j=0; j<memberCount; j++)
{
WPMemberPost member = members.get(j);
String id = member.identifier; // NULL?!? (Expected "436")
if (offer.memberIdentifier.equalsIgnoreCase(id))
{
offer.member = member;
break;
}
}
}
}
}
Отговори:
3 за отговор № 1Разбира се, две променливи със същото име могат да съществуват в йерархия на наследяване
Опитайте този код и направете точка на прекъсване в основния метод на System.out.println(subclass);
, В грешката ще видите, че променливата съществува два пъти, защото е дефинирана в Base
и Subclass
.
public class Main {
public static void main(String[] args) {
Subclass subclass = new Subclass();
subclass.someString = "test";
System.out.println(subclass);
}
private static class Base {
public String someString;
}
private static class Subclass extends Base {
public String someString;
}
}