我正在编写代表数学项目的课程。它们成对出现:一个(称为B
)定义一个集合的元素,另一个(public abstract class Vector<C extends Constant<C,B>, B extends BaseRing<C,B>> implements Element<C,B, Vector<C,B>, VectorialSpace<C,B>> { }
public abstract class VectorialSpace<C extends Constant<C,B>, B extends BaseRing<C,B>> implements Ring<C,B, Vector<C,B>, VectorialSpace<C,B>> { }
public abstract class PolyCoeff<C extends Constant<C,B>, B extends BaseRing<C,B>> extends Vector<C,B> { }
public class RingPoly<C extends Constant<C,B>, B extends BaseRing<C,B>> extends VectorialSpace<C,B> { }
public interface Constant<C extends Constant<C,B>, B extends BaseRing<C,B>> { }
public interface BaseRing<C extends Constant<C,B>, B extends BaseRing<C,B>> { }
public interface Element<C extends Constant<C,B>, B extends BaseRing<C,B>, E extends Element<C,B,E,R>, R extends Ring<C,B,E,R>> extends Constant<E,R> { }
public interface Ring<C extends Constant<C,B>, B extends BaseRing<C,B>, E extends Element<C,B,E,R>, R extends Ring<C,B,E,R>> extends BaseRing<E,R> { }
)表示集合。相关课程是:
C
请注意:
Constant<C,B>
实现接口B
,泛型类型BaseRing<C,B>
实现接口PolyCoeff<C,B>
。Vector<C,B>
不是我工作空间中RingPoly<C,B>
的唯一子类,VectorialSpace<C,B>
也不是public class Homomorphism< C1 extends Constant<C1,B1>, B1 extends BaseRing<C1,B1>,
C2 extends Constant<C2,B2>, B2 extends BaseRing<C2,B2> > {
public static <C extends Constant<C,B>, B extends BaseRing<C,B>>
Homomorphism<C,B,PolyCoeff<C,B>,RingPoly<C,B>> ringToPolyRingHomeo(B ring){
[...]
}
}
的唯一子类。之前描述的类和接口没有任何问题。然而,以下是:
Bound mismatch: The type PolyCoeff<C,B> is not a valid substitute for the bounded parameter <C2 extends Constant<C2,B2>> of the type Homomorphism<C1,B1,C2,B2>
报告的错误是:
Bound mismatch: The type RingPoly<C,B> is not a valid substitute for the bounded parameter <B2 extends BaseRing<C2,B2>> of the type Homomorphism<C1,B1,C2,B2>
PolyCoeff<C,B>
Vector<C,B>
扩展了抽象类Element<C,B,Vector<C,B>,VectorialSpace<C,B>
,后者又实现了接口Constant<Vector<C,B>, VectorialSpace<C,B>>
,后者又扩展了接口PolyCoeff<C,B>
。因此,Constant<Vector<C,B>, VectorialSpace<C,B>>
实现Vector<C,B>
和是特定类型的Vector<C,B>
。
我的问题是:为什么这还不够?考虑到我有 <{1}}的其他子类,我该如何解决问题?
答案 0 :(得分:0)
为了满足C2 extends Constant<C2, B2>
的类型范围,PolyCoeff<C, B>
必须实现Constant<PolyCoeff<C, B>, RingPoly<C, B>>
,而不是? super ...
。
我意识到这并没有告诉您需要更改什么才能使代码正常工作。我怀疑这需要你的一些类型界限来说? extends ...
或@(Html.Kendo().Grid<DtoStuff>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(c => c.Number);
columns.Bound(c => c.Date);
columns.Bound(c => c.Total);
})
.Reorderable(reorderable => reorderable.Columns(true))
.Resizable(resizable => resizable.Columns(true))
.Pageable()
.Filterable(f => f.Extra(false).Mode(GridFilterMode.Menu))
.Sortable(sorting => sorting.SortMode(GridSortMode.SingleColumn).AllowUnsort(false))
.ColumnMenu()
.DataSource(dataSource => dataSource
.Ajax()
.ServerOperation(true)
.PageSize(15)
.Model(model => model.Id(p => p.Number))
.Read(read => read
.Url("https://local-api.net/Customer/v1/Stuff/Stuffs")
)
.Sort(s => s.Add("Date").Descending())
.Filter(f => f.Add(a => a.Date).IsGreaterThanOrEqualTo(DateTime.Now.AddYears(-1)))
)
)
,但我没有足够的分析你的课程,告诉他们应该去哪里。
答案 1 :(得分:0)
找到一种方法:现在Vector
和VectorialSpace
具有以下标题:
public interface Vector<C extends Constant<C,B>, B extends BaseRing<C,B>, V extends Vector<C,B,V,VS>, VS extends VectorialSpace<C,B,V,S>> extends Element<C,B,V,VS>
public interface VectorialSpace<C extends Constant<C,B>, B extends BaseRing<C,B>, V extends Vector<C,B,V,VS>, VS extends VectorialSpace<C,B,V,S>> extends Ring<C,B,V,VS>