code: public Toolbox feature(Object... values) {
          if (values == null && values.length == 0) {
              return this;
          }
          if (this.feature == null) {
              this.feature = new LinkedHashMap<String, Feature>();
          }
          for (Object t : values) {
              if (t instanceof Feature) {
                  _addFeature((Feature) t);
              } else if (t instanceof Tool) {
                  switch ((Tool) t) {
                      case dataView:
                          _addFeatureOnce(t, Feature.dataView);
                          break;
                      case dataZoom:
                          _addFeatureOnce(t, Feature.dataZoom);
                          break;
                      case magicType:
                          _addFeatureOnce(t, Feature.magicType);
                          break;
                      case mark:
                          _addFeatureOnce(t, Feature.mark);
                          break;
                      case restore:
                          _addFeatureOnce(t, Feature.restore);
                          break;
                      case saveAsImage:
                          _addFeatureOnce(t, Feature.saveAsImage);
                          break;
                      default:
                          //ignore
                  }
              }
          }
          return this;
      }
docs: 添加组件
  
  @param values
  @return