Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何对具有不同输入的相同方法使用泛型 专用集extractOfferKeysForAbstractOffers(列出选定的供应商){ Set offerKeys=新的HashSet(); for(AbstractOfferdToOffer:selectedOffers){ add(offer.getOfferKey()); } 还盘; } 专用集合ExtractOfferKeyForOffers(列出选定的供应商){ Set offerKeys=新的HashSet(); for(OfferDto offer:selectedOffers){ add(offer.getOfferKey()); } 还盘; }_Java - Fatal编程技术网

Java 如何对具有不同输入的相同方法使用泛型 专用集extractOfferKeysForAbstractOffers(列出选定的供应商){ Set offerKeys=新的HashSet(); for(AbstractOfferdToOffer:selectedOffers){ add(offer.getOfferKey()); } 还盘; } 专用集合ExtractOfferKeyForOffers(列出选定的供应商){ Set offerKeys=新的HashSet(); for(OfferDto offer:selectedOffers){ add(offer.getOfferKey()); } 还盘; }

Java 如何对具有不同输入的相同方法使用泛型 专用集extractOfferKeysForAbstractOffers(列出选定的供应商){ Set offerKeys=新的HashSet(); for(AbstractOfferdToOffer:selectedOffers){ add(offer.getOfferKey()); } 还盘; } 专用集合ExtractOfferKeyForOffers(列出选定的供应商){ Set offerKeys=新的HashSet(); for(OfferDto offer:selectedOffers){ add(offer.getOfferKey()); } 还盘; },java,Java,与使用几乎相同的方法不同的是,我想使用泛型。我是这样创造的 private Set<String> extractOfferKeysForAbstractOffers(List<AbstractOfferDto> selectedOffers) { Set<String> offerKeys = new HashSet<String>(); for (AbstractOfferDto offer : selected

与使用几乎相同的方法不同的是,我想使用泛型。我是这样创造的

private Set<String> extractOfferKeysForAbstractOffers(List<AbstractOfferDto> selectedOffers) {
        Set<String> offerKeys = new HashSet<String>();
        for (AbstractOfferDto offer : selectedOffers) {
            offerKeys.add(offer.getOfferKey());
        }
        return offerKeys;
    }

 private Set<String> extractOfferKeysForOffers(List<OfferDto> selectedOffers) {
        Set<String> offerKeys = new HashSet<String>();
        for (OfferDto offer : selectedOffers) {
            offerKeys.add(offer.getOfferKey());
        }
        return offerKeys;
    }
private Set extractOfferKeysForOffers(列出优惠){
Set offerKeys=新的HashSet();
对于(T报价:报价){
add(offer.getOfferKey());
}
还盘;
}
但问题是,
offer.getOfferKey()
无法识别。报价的唯一选项是
abstractOfferTo
OfferTo


如何在此示例中使用泛型?

告诉编译器抽象类型:

private <T> Set<String> extractOfferKeysForOffers(List<T> offers) {
        Set<String> offerKeys = new HashSet<String>();
        for (T offer : offers) {
            offerKeys.add(offer.getOfferKey());
        }
        return offerKeys;
    }
private Set extractOfferKeysForOffers(列出优惠){
Set offerKeys=新的HashSet();
对于(T报价:报价){
add(offer.getOfferKey());
}
还盘;
}
是,您可以:

private <T extends AbstractOfferDto> Set<String> extractOfferKeysForOffers(List<T> offers) {
        Set<String> offerKeys = new HashSet<String>();
        for (T offer : offers) {
            offerKeys.add(offer.getOfferKey());
        }
        return offerKeys;
    }

使用
T扩展CommonInterface
感谢您的想法,但该提议不是抽象类的扩展。
  public interface IOffer {
     String getOfferKey();
  }

  public class OfferDto implements IOffer { ... }

  public class AbstractOfferDto implements IOffer { ... }

  class X {    
    private <T extends IOffer> Set<String> extractOfferKeysForOffers(List<T> offers) {
        Set<String> offerKeys = new HashSet<String>();
        for (T offer : offers) {
            offerKeys.add(offer.getOfferKey());
        }
        return offerKeys;
    }
  }
  class X {    
    private <T extends AbstractOfferDto> Set<String> extractOfferKeysForOffers(List<T> offers) {
        Set<String> offerKeys = new HashSet<String>();
        for (T offer : offers) {
            offerKeys.add(offer.getOfferKey());
        }
        return offerKeys;
    }
  }