小编Hel*_*ios的帖子

如何处理ArrayList的默认值

我正在创建一个包含我正在写的名为Person的类的应用程序.Person的一个字段是'aliases',它是一个ArrayList<String>.最终,别名将根据以下逻辑显示给用户:如果Person具有别名,则应显示为[Finch, Wren, Admin, etc...],否则UNKNOWN应显示.到目前为止,我已经尝试过三种方式之一:

  1. Person包含getAliases()简单地返回ArrayList副本的方法.调用者检查空数组以实现所需的行为.

  2. Person包含aliasesToString()可以调用以生成所需字符串的方法.

  3. 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)

java

7
推荐指数
1
解决办法
871
查看次数

AppCompatPreferenceActivity向上按钮不起作用

我正在尝试创建一个扩展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)

android

4
推荐指数
1
解决办法
2269
查看次数

使用一个带参数的getter而不是多个没有参数的getter

我第一次尝试做一些不是简单练习的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)

java oop getter

0
推荐指数
1
解决办法
134
查看次数

标签 统计

java ×2

android ×1

getter ×1

oop ×1