Могу ли я сделать общий конструктор для другого List <> в Java? - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть функция в классе, где я объявил от List<A>,List<B>,List<C>........ до 1000 списка, каждый из которых в отдельном цикле For.

Я инициализировал cacheMetaDataList, чтобы поместить все данные:

 List<CacheMetaData> cacheMetaDataList=new ArrayList<>();

Я добавляю все данные цикла For в:

cacheMetaDataList.add(new CacheMetaData(key,size,value));

CacheMetaDataImpl.java class

  public List<CacheMetaData> getAllCacheName(){
        List<CacheMetaData> cacheMetaDataList=new ArrayList<>();
        for( Cache.Entry<String, GenericClassForList> entry : this.operatingParametersCache) {
            String key = entry.getKey();
            List<A> value = entry.getValue();
            int size=value.size();
            cacheMetaDataList.add(new CacheMetaData(key,size,value));
        }

        for( Cache.Entry<String, GenericClassForList> entry : this.securitiesTradingParameterCache) {
            String key = entry.getKey();
            List<B> value = entry.getValue();
            int size=value.size();
            cacheMetaDataList.add(new CacheMetaData(key,size,value));
        }

        for( Cache.Entry<String, GenericClassForList> entry : this.marketCloseStatisticsCache) {
            String key = entry.getKey();
            List<C> value = entry.getValue();
            int size=value.size();
            cacheMetaDataList.add(new CacheMetaData(key,size,value));
        }

        return cacheMetaDataList;
    }

Проблема не в этом классе, но проблема начинается сэтот класс:

package com.cache.model;

import com.tms.component.securitiestradingparams.entity.SecuritiesTradingParamDTO;

import java.util.List;

public class CacheMetaData {

    private String cacheName;
    private int count;
    private List<A> aList;
     private List<B> bList;
      private List<C> cList;



    public CacheMetaData(String cacheName, int count,List<A> a) {
        this.cacheName = cacheName;
        this.count = count;
        tlis.aList=a;
    }

    public CacheMetaData(String cacheName, int count,List<A> b) {
        this.cacheName = cacheName;
        this.count = count;
        tlis.bList=b;
    }



    public CacheMetaData(String cacheName, int count,List<A> c) {
        this.cacheName = cacheName;
        this.count = count;
        tlis.cList=c;
    }

}

У меня возникла проблема в классе для каждого new CacheMetaData(key,size,value);. Предположим, что если в списке 1000, то мне нужно создать 1000 конструкторов.Мне нужен универсальный конструктор, который может инициализировать другой список объектов. Это будет очень простой код для создания 1000 конструкторов для другого списка.

1 Ответ

2 голосов
/ 20 сентября 2019

почему бы вам не выбрать общий?

package com.cache.model;

import com.tms.component.securitiestradingparams.entity.SecuritiesTradingParamDTO;

import java.util.List;

public class CacheMetaData<CACHE> {

    private String cacheName;
    private int count;
    private List<CACHE> cache;

    public CacheMetaData(String cacheName, int count,List<CACHE> cache) {
        this.cacheName = cacheName;
        this.count = count;
        tlis.cache = cache;
    }

Так что в классе CacheMetaDataImpl.java

  public List<CacheMetaData> getAllCacheName(){
        List<CacheMetaData> cacheMetaDataList=new ArrayList<>();
        for( Cache.Entry<String, GenericClassForList> entry : this.operatingParametersCache) {
            String key = entry.getKey();
            List<operatingParametersCache> value = entry.getValue();
            int size=value.size();
            cacheMetaDataList.add(new CacheMetaData<operatingParametersCache>(key,size,value));
        }

        for( Cache.Entry<String, GenericClassForList> entry : this.securitiesTradingParameterCache) {
            String key = entry.getKey();
            List<securitiesTradingParameterCache> value = entry.getValue();
            int size=value.size();
            cacheMetaDataList.add(new CacheMetaData<securitiesTradingParameterCache>(key,size,value));
        }

        for( Cache.Entry<String, GenericClassForList> entry : this.marketCloseStatisticsCache) {
            String key = entry.getKey();
            List<marketCloseStatisticsCache> value = entry.getValue();
            int size=value.size();
            cacheMetaDataList.add(new CacheMetaData<marketCloseStatisticsCache>(key,size,value));
        }

        return cacheMetaDataList;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...