⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 propertypath.java

📁 java属性邦定的(JSR-295)的一个实现
💻 JAVA
字号:
/* * Copyright (C) 2006-2007 Sun Microsystems, Inc. All rights reserved. Use is * subject to license terms. */package org.jdesktop.beansbinding;import java.util.StringTokenizer;import java.util.ArrayList;/** * @author Shannon Hickey * @author Scott Violet */abstract class PropertyPath {    private PropertyPath() {}    public abstract int length();    // throws ArrayIndexOutBoundsException if not valid    public abstract String get(int index);    public String getLast() {        return get(length() - 1);    }    public abstract String toString();    public static PropertyPath createPropertyPath(String path) {        if (path == null) {            throw new IllegalArgumentException("path must be non-null");        }        StringTokenizer tokenizer = new StringTokenizer(path, ".");        ArrayList<String> list = new ArrayList<String>();        while (tokenizer.hasMoreTokens()) {            list.add(tokenizer.nextToken());        }        int size = list.size();        if (size == 0) {            throw new IllegalArgumentException("path must be non-empty");        } else if (list.size() == 1) {            return new SinglePropertyPath(list.get(0));        } else {            String[] multi = new String[list.size()];            return new MultiPropertyPath(list.toArray(multi));        }    }    public boolean equals(Object o) {        if (o == this) {            return true;        }        if (o instanceof PropertyPath) {            PropertyPath oPath = (PropertyPath)o;            int length = length();            if (length != oPath.length()) {                return false;            }            for (int i = 0; i < length; i++) {                if (!get(i).equals(oPath.get(i))) {                    return false;                }                return true;            }        }        return false;    }        public int hashCode() {        int result = 17;        int length = length();        for (int i = 0; i < length; i++) {            result = 37 * result + get(i).hashCode();        }        return result;    }    static final class MultiPropertyPath extends PropertyPath {        private final String[] path;                public MultiPropertyPath(String[] path) {            this.path = path;            for (int i = 0; i < path.length; i++) {                path[i] = path[i].intern();            }            assert (path.length > 0);        }        public int length() {            return path.length;        }        public String get(int index) {            return path[index];        }                public String toString() {            StringBuilder builder = new StringBuilder();            builder.append(path[0]);            for (int i = 1; i < path.length; i++) {                builder.append('.');                builder.append(path[i]);            }            return builder.toString();        }    }            static final class SinglePropertyPath extends PropertyPath {        private final String path;                public SinglePropertyPath(String path) {            this.path = path.intern();        }        public int length() {            return 1;        }        public String get(int index) {            if (index == 0) {                return path;            }            throw new ArrayIndexOutOfBoundsException();        }        public String getLast() {            return path;        }        public String toString() {            return path;        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -