【java-如何为每个泛型类型创建一个新的bean实例?】教程文章相关的互联网学习教程文章

深入了解Java泛型类型擦除以及类型擦除带来的问题(含解析)【代码】【图】

1.Java泛型的实现方法:类型擦除大家都知道,Java的泛型是伪泛型,这是因为Java在编译期间,所有的泛型信息都会被擦掉,正确理解泛型概念的首要前提是理解类型擦除。Java的泛型基本上都是在编译器这个层次上实现的,在生成的字节码中是不包含泛型中的类型信息的,使用泛型的时候加上类型参数,在编译器编译的时候会去掉,这个过程成为类型擦除。如在代码中定义List<Object>和List<String>等类型,在编译后都会变成List,JVM看到的只...

java – 特定扩展类的泛型类型args?【代码】

我想有一个实现接口的类,它指定特定的子类作为参数.public abstract Task implements TaskStatus<Task> {TaskStatus<T> listener;protected complete() {// ugly, unsafe castcallback.complete((T) this);} }public interface TaskStatus<T> {public void complete(T task); }但是,而不是仅仅是任务,或者,我想保证使用的类型arg是扩展此类的特定类的类型. 所以我提出的最好的是:public abstract Task<T extends Task> implements...

java – 在方法中获取请求泛型类型【代码】

我有一个返回泛型类型的方法,有没有办法检索< T>的值不必通过参数给出这个?public <T> T getObject(String location, String method) {// ! Here I want to retrieve the class of TClass<?> requestedClass = getMeTheClassThatWasRequested();return requestedClass; }有没有办法做到这一点?解决方法:不,你必须明确传入类型信息. Java在编译时丢弃所有类型信息.这称为“类型擦除”.这也是为什么集合对象上的toArray方法需要一个...

java 泛型类型擦除的一个问题【图】

java中的泛型采用了类型擦除的方法,但这种方法会存在一些问题。 下面举一个在方法重载时的问题,由于才有了类型擦除,导致两个源码看起来可以重载的方法无法重载(编译无法通过) 由于采用了类型擦除,使得两个方法内参数类型判断为相同。

Java反射获取泛型类型

本文链接:https://blog.csdn.net/hongxingxiaonan/article/details/49202613 在Java反射技术的应用中,取得一个类的成员、方法和构造函数相对比较容易,但是要想取得其中包含的泛型类型则相对困难一些。先看一个简单的例子,然后详细说明每个步骤的作用。public class Demo { private List<Integer> list1; private List<Set<Integer>> listSet; public Set<String> fun1(Map<Integer, String> map){return...

java-泛型类型和toArrayMethod【代码】

我有一班MyStack< T>它定义了以下内容public T[] toArray(){int s=size();@SuppressWarnings("unchecked")T[] result=(T[])new Object[s];Node n=first;for (int i=0; i<s; i++){result[i]=n.data;n=n.next;}return result; }由于这将返回类型T的数组,因此我认为如果声明了此实例:MyStack< String> s = new MyStack<&gt ;,以下将是完全有效的:String [] test = s.toArray().我认为这是因为s的类型为String,所以toArray应该返回St...

java-如何为每个泛型类型创建一个新的bean实例?【代码】

所以我有我的学科课:@Component public class Subject<T extends Monitorable> {@Autowiredprivate List<Observer<T>> observers;public void fireListeners(T monitorable){for (Observer<T> observer : observers) {observer.doSome(monitorable);}} }这是为Monitorable的每个实现创建新的主题实例的方法,例如:@Autowired private Subject<Trip> tripSubject;行程是可监控的,它有自己的观察者@Autowired private Subject<Truck...

java-未检查的从X转换为扩展X的泛型类型【代码】

我的任务是在我们的代码库中删除尽可能多的@SupressWarnings,但我不确定如何解决此特定问题. 我有此外部方法返回一个Serializable对象,并且通用类型T扩展了我想将对象投射到的Serializable. 这是代码的简化版本:class A <T extends Serializable> {public T someMethod() {Serializable result = someExternalMethod(...);T convertedObject = (T) result; // produces unchecked cast warningreturn convertedObject;} } 是否可以...

java-在构造函数上使用具有规范的泛型类型【代码】

如何在Java中正确执行以下操作?我想要一个可以创建对象列表的通用例程.在此例程中,我希望这些对象的类的构造函数支持特定的参数. 为了澄清:我希望该例程创建一个List< T>.从JSON字符串.这是较大的反序列化代码的一部分.如果我可以以某种方式指定每个受支持的T实现给定JSONObject的创建T的构造函数,那么我可以编写如下例程:interface CreatableFromJSONObject<T> {T(JSONObject object); // Complains about missing return ...

Java创建泛型类型的数组【代码】

这个问题已经在这里有了答案: > What’s the reason I can’t create generic array types in Java? 15个我有一个通用K并希望创建一个空数组,所以我键入private K[] keys = new K[0];但是,eclipse说“无法创建K的通用数组” 我错过了什么吗?您可以创建一个空的int数组,这是泛型无法做到的吗?解决方法:您无法在Java中创建泛型数组.解决方法是:keys = (K[])new Obje...

java-使用泛型类型执行强制转换时发出警告【代码】

我不明白为什么在尝试执行此操作时会收到警告(未经检查的演员表):... Map<? estends SomeType, SomeOtherType> map; ... Map<SomeType, SomeOtherType> castedMap = (Map<SomeType, SomeOtherType>) map; ...我的意思是将castedMap发布到外部代码的危险是什么?两种操作均可在运行时完美运行: >使用SomeType类型的键从castedMap获取元素>使用SomeType类型的键将元素放入castedMap中. 我只是使用@SuppressWarnings(“ unchecked”...

java-如何实现泛型类型的equals?【代码】

假设我有一个像这样的通用容器类型:public final class Container<T> {public final T t;public Container(final T t) {this.t = t;} }我想实现等于以使通过:final Container<Object> a = new Container<>("Hello"); final Container<String> b = new Container<>("Hello");assertNotEquals(a, b);实例a和b应该不同,因为它们的类型参数T不同. 但是,由于要擦除,因此很难做到.例如,此实现不正确:@Override public boolean equals(...

java-向子级添加更多泛型类型,以泛型扩展父级【代码】

我想提高抽象水平.我有public abstract class CrudRepositoryDtoConverter<R extends CrudRepository<E, Integer>, E, D> implements CrudDTO<D>我想将其用作另一个抽象类的父类public abstract class AbstractController我尝试了多次组合,但没有成功,例如public abstract class AbstractController<K extends CrudRepositoryDtoConverter<R extends CrudRepository<E, Integer>, E, D>> {@Autowiredprivate K repository;}这个不能...

将lambda作为参数传递给泛型类型-Java 8【代码】

如果我有一个方法foo(Predicate bar),则可以在下一步使用它:foo(new Predicate<MyObject>() {public boolean apply(MyObject obj) { return true;}} )但是如何使用lambda样式的表达式达到相同的结果:foo((MyObject obj) -> true); //obvious compile exception如何将带有lambda的泛型类型传递给方法?或者,简单地讲,如何使用不带局部变量的lambda样式创建Predicate(或其他)类的匿名对象.解决方法:不要使用原始类型foo(Predicate&...

Java泛型和泛型类型【代码】

我有一个ExtA类,其中包含一个用于过滤ArrayList的过滤器函数:public ExtA<T> filt(...) {//code}编译时出现错误:找不到符号类T.这是为什么?解决方法:您必须告诉它,在这种情况下T是泛型类型:public <T> ExtA<T> filt(Func<T, Boolean> a)您用符号T声明了接口,但是该符号仅在接口声明本身中有效.您在方法中使用的T是不同的T.您必须再次声明它,因为该方法未在接口声明中实现.

实例 - 相关标签