我正在创建一个包含我正在写的名为Person的类的应用程序.Person的一个字段是'aliases',它是一个ArrayList<String>.最终,别名将根据以下逻辑显示给用户:如果Person具有别名,则应显示为[Finch, Wren, Admin, etc...],否则UNKNOWN应显示.到目前为止,我已经尝试过三种方式之一:
Person包含getAliases()简单地返回ArrayList副本的方法.调用者检查空数组以实现所需的行为.
Person包含aliasesToString()可以调用以生成所需字符串的方法.
ArrayList<String>别名是一种实现,而不是使用DefaultableArrayList<T>.此类扩展了ArrayList并保存了类型为T的默认值.该toString()方法被覆盖以生成所需的字符串.应用程序调用some_person.getAliases().toString()以产生所需的行为.
以下是我对选项3的实现:
public class DefaultableArrayList<T> extends ArrayList<T> {
private static final long serialVersionUID = -6735356930885363889L; // Auto-generated
private final T defaultElement;
public DefaultableArrayList(T defaultElement) {
super();
this.defaultElement = defaultElement;
}
public DefaultableArrayList(Collection<? extends T> c, T defaultElement) {
super(c);
this.defaultElement = defaultElement;
}
public DefaultableArrayList(int initialCapacity, T defaultElement) {
super(initialCapacity);
this.defaultElement = defaultElement;
}
public T getDefaultElement() …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个扩展AppCompatPreferenceActivity并在操作栏中实现向上按钮的活动.视觉上一切看起来都很好,但向上按钮不响应触摸事件.以下是我的java和xml代码:
PrefrencesDisplayActivity.java
package com.example.matthew.testsettings;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.CoordinatorLayout;
import android.support.v7.widget.Toolbar;
import android.widget.ListView;
import android.widget.RelativeLayout;
import java.util.List;
public class PreferencesDisplayActivity extends AppCompatPreferenceActivity {
CoordinatorLayout activityRoot;
AppBarLayout appBarLayout;
Toolbar toolbar;
RelativeLayout contentRoot;
ListView preferencesList;
@Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.preferences, target);
initialiseUI();
}
private void initialiseUI() {
// Inflate activity layout from xml
setContentView(R.layout.activity_preferences_display);
// Get handles to UI elements
activityRoot = (CoordinatorLayout) findViewById(R.id.prefDisplay_activity_root);
appBarLayout = (AppBarLayout) findViewById(R.id.prefdisplay_activity_appBarLayout);
toolbar = (Toolbar) findViewById(R.id.prefDisplay_activity_toolbar);
contentRoot = (RelativeLayout) findViewById(R.id.prefDisplay_content_root);
preferencesList = (ListView) findViewById(android.R.id.list);
// …Run Code Online (Sandbox Code Playgroud) 我第一次尝试做一些不是简单练习的OOP就是在java中创建一个程序来存储有关人的信息(比如联系簿).下面是我正在研究的名为Person的类的片段.将来某个时候,其他人将会对其进行实例化.
public class Person {
// Enum of the fields in Person
private static enum Field {NAME, ALIASES, DATE_OF_BIRTH, DATE_OF_DEATH, VITAL_STATUS,
RELATIONSHIPS}
private static enum VitalStatus {ALIVE, DECEASED, ASSUMED_DECEASED, UNKNOWN}
private final int id;
private Name name;
private List<String> aliases;
private GregorianCalendar dateOfBirth;
private GregorianCalendar dateOfDeath;
private VitalStatus vitalStatus;
private List<Relationship> relationships;
// Time field was last updated
private Map<Field, GregorianCalendar> updateTimes;
// Initialise a blank/unknown person
public Person() {
this.id = getNewId();
this.name = new Name(); // Blank name …Run Code Online (Sandbox Code Playgroud)