如何在 java 中将变量值从一页继承到另一页?
How to inher variables values from one page to another in java?
我是 java 的新手,我受困于此。
我有一个 BasePage class,其中包含一个“全局”列表和一个像这样的 int 值;
public class BasePage {
public int number;
public List<String> stringList = new ArrayList<>;
}
此外,我有两个 class 扩展该页面;
public class ClassA extends BasePage {
public void addStringToList {
stringList.add("String1");
number++;
}
}
其他:
public class ClassB extends BasePage {
public void addStringToList {
stringList.add("String2");
number++;
}
}
然后,当我在调用 who classes 后访问“stringList”和“number”时,这些值不会“堆叠”在 BasPage 中。有没有办法做到这一点?谢谢!
您的字段不是静态的,也就是说,BasePage
对象的每个实例都有自己的 'version'。 (ClassA
的一个实例也是 一个 BasePage
实例;ClassA
扩展了 BasePage
这意味着它是一种更具体的类型BasePage 的。换句话说,这是一个带有额外内容的 BasePage)。
因此,当您 运行:
BasePage z = new BasePage();
ClassA a = new ClassA();
ClassB b = new ClassB();
您有 3 个不同的 number
和 3 个不同的 stringList
。
您可以通过将它们设为 static
来将其减少到整个 VM 只有一个,但是 注意 ,这几乎被普遍嘲笑为糟糕的代码风格:你已经创建了全局状态,这很难测试,并且使代码难以阅读。
一个更好的主意是有一个单独的 class,这样它的实例代表 'an application'、'a library'、'a ledger' 或类似的东西:包含 'a whole bunch of BasePage instances'.
的概念
这个 stringList
变量将在图书馆 class 中,而不是书 class 中。示例:
糟糕的设计
public class Book {
private static int booksInLibrary = 0;
private String title;
public Book(String title) {
this.title = title;
booksInLibrary++;
}
}
好设计
public class Library {
private final List<Book> books = new ArrayList<>();
public int countBooks() {
return books.size();
}
public void addBook(Book book) {
books.add(book);
}
}
public class Book {
private final String title;
public Book(String title) {
this.title = title;
}
}
我是 java 的新手,我受困于此。 我有一个 BasePage class,其中包含一个“全局”列表和一个像这样的 int 值;
public class BasePage {
public int number;
public List<String> stringList = new ArrayList<>;
}
此外,我有两个 class 扩展该页面;
public class ClassA extends BasePage {
public void addStringToList {
stringList.add("String1");
number++;
}
}
其他:
public class ClassB extends BasePage {
public void addStringToList {
stringList.add("String2");
number++;
}
}
然后,当我在调用 who classes 后访问“stringList”和“number”时,这些值不会“堆叠”在 BasPage 中。有没有办法做到这一点?谢谢!
您的字段不是静态的,也就是说,BasePage
对象的每个实例都有自己的 'version'。 (ClassA
的一个实例也是 一个 BasePage
实例;ClassA
扩展了 BasePage
这意味着它是一种更具体的类型BasePage 的。换句话说,这是一个带有额外内容的 BasePage)。
因此,当您 运行:
BasePage z = new BasePage();
ClassA a = new ClassA();
ClassB b = new ClassB();
您有 3 个不同的 number
和 3 个不同的 stringList
。
您可以通过将它们设为 static
来将其减少到整个 VM 只有一个,但是 注意 ,这几乎被普遍嘲笑为糟糕的代码风格:你已经创建了全局状态,这很难测试,并且使代码难以阅读。
一个更好的主意是有一个单独的 class,这样它的实例代表 'an application'、'a library'、'a ledger' 或类似的东西:包含 'a whole bunch of BasePage instances'.
的概念这个 stringList
变量将在图书馆 class 中,而不是书 class 中。示例:
糟糕的设计
public class Book {
private static int booksInLibrary = 0;
private String title;
public Book(String title) {
this.title = title;
booksInLibrary++;
}
}
好设计
public class Library {
private final List<Book> books = new ArrayList<>();
public int countBooks() {
return books.size();
}
public void addBook(Book book) {
books.add(book);
}
}
public class Book {
private final String title;
public Book(String title) {
this.title = title;
}
}