2017-04-09 16 views
0

一般的なオブジェクトのリンクリストで動作するプログラムで作業しています.1つのリストを定義するクラスの中に、そのリンクの値を返すメソッドがあります:1つのリンクリストの汎用戻り型

public class Link<E> { 
     private E _value; 

     public E getValue() { 
      return _value; 
     } 

は、その後、私は

public class LinkedList <E> implements List <E> { 
    public E get(int index){ 
     Link current = goTo(index); //go to is a helper method that returns a pointer to a Link at position index 
     E value = current.getValue(); //this is the source of the problem 
     return value; 

    } 

} 

問題が持つに何かを持っているリスト内の特定の位置にリンクの値を返すためにリンクされたリンクのクラスにタイプ< E>のこの戻り値を使用したいですジェネリックタイプ< E>、私は完全にはありませんそれがどのように動作するかを理解する。

アップデートは私がメッセージを取得します:Type mismatch: cannot convert from Object to Eをソースに示されているライン上。

+4

問題で何を私たちに伝えるために忘れてしまった –

+0

あなたが実装しようとしている(<E>なし)Link currentとして

Link<E> current = goTo(index); 

。?。リストでもリストはインターフェイスではありませんか?代わりにリストを使用するべきですか? – zuc0001

+0

リストはインターフェイスです – prasanth

答えて

0

実際にタイプパラメータを実装する際に、そのタイプパラメータを指定する必要があります。サンプルを以下に示します。ここ

package com.example.transformer; 

/** 
* This represents the transformer contract to transform domain objects into 
* data transfer objects. 
* 
* @param <S> 
*   source to be transformed. 
* @param <T> 
*   result after the transformation. 
*/ 
public interface Transformer<S, T> { 
    T transform(S source); 

} 

STは、実際の実装の実際のタイプProductDetailsDTOOrderDetailsDTOで置換されていることを注意、

package com.example.transformer; 

import com.example.domain.dto.OrderDetailsDTO; 
import com.example.domain.dto.ProductDetailsDTO; 
import com.example.domain.dto.ShippingDetailsDTO; 

public class ProductDetailsDTOTOOrderDetailsDTOTransformer implements Transformer<ProductDetailsDTO, OrderDetailsDTO> { 
    private ShippingDetailsDTO shippingInformation; 

    public ProductDetailsDTOTOOrderDetailsDTOTransformer(ShippingDetailsDTO shippingInformation) { 
     super(); 
     this.shippingInformation = shippingInformation; 
    } 

    @Override 
    public OrderDetailsDTO transform(ProductDetailsDTO source) { 
     return new OrderDetailsDTO(source.getName(), source.getUnitPrice() + shippingInformation.getCost(), 
       source.getUnitPrice(), source.getCurrency(), source.getSoldBy(), 
       shippingInformation.getCourierService(), shippingInformation.getAddress(), 
       shippingInformation.getCost()); 
    } 

} 

実装です。あなたの場合、それはこのようなものになるでしょう。

public class LinkedList <YourType> implements List <E> { 
    // your code goes here ... 
} 

これが役に立ちます。幸せなコーディング。

+0

これは必ずしも – prasanth

+0

である必要はありません。空のままにすると、Objectクラスになります。しかし、それでもEを渡すことはできません。 –

0

私はあなたの問題がこの行だと思う:Link current = goTo(index); Link <TypeOfObject> current = goTo(index); "TypeOfObjectを戻り値の型の値goToメソッドに置き換えます。私はそれがIntegerであると仮定しているので、Link <TypeOfObject> current = goTo(index);Link <Integer> current = goTo(index);

に置き換えてください。
+0

goTo(index)はどのような型の値を返しますか?文字列?整数? をその戻り型のgoToメソッドで置き換えます。 – HaroldSer

1

あなたがこのようにすればいいようだ:Objectクラスのリストを指摘

関連する問題