我认为我对Java泛型有一些很好的理解。
这个代码不编译,我知道原因。
我们可以通过测试方法--只有动物或它的超级类型的列表(比如对象列表)
package scjp.examples.generics.wildcards;
import java.util.ArrayList;
import java.util.List;
class Animal {}
class Mammal extends Animal {}
class Dog extends Mammal {}
public class Test {
public void test(List<? super
为什么编译器不产生任何错误?我在JLS哪里能读到这种情况?
class Main {
public static void main(String[] args) {
A a = new A();
List<Integer> list = a.getStrings();
}
static class A<X> {
public List<String> getStrings() {
return new ArrayList<String>();
}
}
}
有人能告诉我为什么会出现编译错误吗?我不明白为什么在第二个for循环中对A的强制转换会导致string()返回一个通用的对象列表。
import java.util.ArrayList;
import java.util.List;
public class E {
public static void main(String[] args) {
for (String s : new D().strings()) {
System.out.println("s = " + s);
}
for
有没有办法在不引发ClassCastException的情况下将有界泛型类型的数组传递给具有相同泛型类型的参数的方法?
public class Heap<E extends Comparable> implements java.lang.Cloneable{
private java.util.ArrayList<E> list = new java.util.ArrayList<E>();
public Heap(E[] objects) {
for (int i = 0; i < objects.leng
请有人解释一下,为什么需要为ForEachLoop实例指定泛型类型?
编译器抱怨的原因:类型不匹配:不能从元素类型对象转换为字符串
JDK 1.5.0_09
import java.util.ArrayList;
import java.util.Collection;
public class ForEachLoop<T> {
public static void main(String[] args) {
// Non functional version
ForEachLoop f = new ForEachLoop();
// Functi
我对IntelliJ的想法很陌生。我以前经常使用Eclipse。
默认情况下,IntelliJ不要求为提供参数类型。
// Following code doesn't give any warning
List list = null;
// I want to make IntelliJ ask me to specify type parameter (say Long)
List<Long> list = null; // i.e If I want a List of Long
如何设置IntelliJ,以便它要求我在使用泛型java类型时给出泛型类型参数?
你知道这行有什么问题吗?outStr[i]=(String) s.pop();
import java.util.ArrayList;
import java.util.Scanner;
public class StringWordReverse {
public String[] StringToWord(){
Scanner sc = new Scanner(System.in);
sc.useDelimiter(" ");
ArrayList<String> wordList= new ArrayL
类subA是A类的子类,我试图重写一个方法,但不知怎么它不允许我重写它。为什么会这样呢?是因为参数中的参数吗?
错误信息:
名称冲突: subA中的add( E#2 )和A中的add(E#2)具有相同的擦除,但它们都不覆盖E#1、E#2是类型变量的其他变量:
E#1扩展了类subA中声明的对象
E#2扩展了A类中声明的对象
SuperClass A:
public class A <E> {
public void add(E toInsert) {...}
}
SubClass subA:
public class subA <E> extends
原始列表可以转换为List<?>。为什么原始列表不能转换为List<?>列表
{ // works
List raw = null;
List<?> wild = raw;
}
{ // Type mismatch: cannot convert from List<List> to List<List<?>>
List<List> raw = null;
List<List<?>> wild = raw;
}
背景故事(以减轻):
我使用的API
考虑以下代码:
import java.util.ArrayList;
import java.util.List;
public class UnboundedWildcardProblem {
public static void main(String[] args) {
List<?> a = new ArrayList();
List<? extends Object> b = new ArrayList();
}
}
List<?>的创建不会产生任何警告,但是创建List<? extend
以下代码毫无例外地成功编译和运行
import java.util.ArrayList;
class SuperSample {}
class Sample extends SuperSample {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
try {
ArrayList<Sample> sList = new ArrayList<Sample>();
Object o = sList;
A
下面是一个示例程序。评论将失败,我想知道是否可以创建一个方法来实现在运行时创建列表的功能。
import java.util.ArrayList;
import java.util.List;
public class ListMaker
{
public static List<?> makeList(Class clazz)
{
// I want to do something like this
return new ArrayList<clazz>();
}
public static v
我有这段代码,它无法编译:
import java.util.ArrayList;
import java.util.List;
public class TypeSafetyTest {
public static void main(String[] args) {
TypeSafetyTest test = new TypeSafetyTest();
test.run();
}
private void run() {
Car car = new Car();
List<String>
Android Studio 2.1.2
我收到了这个警告,但我似乎找不到原因。我没有使用任何原始类型。
Unchecked call to attachView(DownloadViewContract) as a member of raw type
我有以下接口
public interface DownloadPresenterContract {
interface Operations<DownloadViewContract> {
void attachView(DownloadViewContract view);
void
我正在尝试使用字节伙伴编写一个java工具代理。我的目标是用自己的代理调用替换java标准库方法调用。有人建议我使用Buddy的MemberSubstitution来实现这一点。我使用了和问题作为我的参考。
我正在使用Intellij的想法进行编码。我的代理代码被分成多个文件,如下所示:
MyFirstAgent.java
public class MyFirstAgent {
public static void premain(String agentArgs, Instrumentation inst) {
new AgentBuilder.Default()
这是我为这个问题的上下文创建的一组类。
水族馆类别:
package test;
import java.util.ArrayList;
public class Aquarium {
// the aquarium is composed of fish tanks
ArrayList<Object> aquarium;
public Aquarium(){
aquarium = new ArrayList<Object>();
}
public <T> void addFishToTank(int index, T fish){
java JDK 6是否支持旧的非泛型集合,或者它是否会在运行时破坏现有代码?
如果它支持它,你一定要启用它吗?
举个例子:
List<Integer> list = new ArrayList<Integer>();
list.add(5);
Alpha a = new Alpha();
a.insert(list);
for (Integer integer : list) {
System.out.println(integer);
}
非泛型(遗留代码):
public class Alpha {
public void insert(List li
考虑以下Employee类和一个名为Manager的子类-
public class Employee
{
private String name;
public Employee(String name)
{
this.name = name;
}
public String getInfo()
{
return name;
}
}
public class Manager extends Employee
{
public Manager(String name)
{
Java类不能有两个重载的方法,它们在类型擦除后具有相同的签名。Java将为以下场景生成编译时错误:
public class Example {
public void print(Set<String> strSet) { }
public void print(Set<Integer> intSet) { }
}
但我的问题不是这个。有两个场景1和2。我想知道,为什么他们的行为不一样?
Scenario 1
import java.util.ArrayList;
import java.util.List;
public class Method
在使用仿制药时,我发现了一种奇怪的行为。
在这个类Foo<T>中,strings成员与T没有任何关系
package test;
import java.util.ArrayList;
public class Foo<T> {
ArrayList<String> strings;
T getSome() {
return null;
}
}
这个类主要用于:
package test;
public class Main {
public static void main() {
Fo
今天我遇到了一些Java泛型的奇怪行为。下面的代码编译得很好,并如您所期望的那样工作:
import java.util.*;
public class TestGeneric
{
public static void main(String[] args)
{
GenericClass<Integer> generic = new GenericClass<Integer>(7);
String stringFromList = generic.getStringList().get(0);
}
st
我可以这么做:
import java.util.ArrayList;
public class Array {
public static void main(String args[]){
ArrayList<String> myList = new ArrayList<String>();
myList.add("S");
}
}
然而,我不能这样做:
import java.util.ArrayList;
public class Array {
ArrayList<String>
java.util.List records = new java.util.ArrayList();
java.sql.ResultSet rs = selectestatement.executeQuery(query1);
while (rs.next()) {
java.util.List record = new java.util.ArrayList();
record.add(rs.getString("WHLO").trim());
record.add("888509018579");
有两个程序为什么第一个代码可以工作?我希望它在访问元素时抛出运行时异常,因为添加的是字符串而不是整数
类似的..。第二个代码是在访问元素时抛出运行时异常,尽管它能够轻松地在arrayList中添加Integer,尽管它声明它包含字符串。
在这两个代码中,我们都成功地添加了不同的数据类型,但是在访问元素时似乎出现了问题
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<Integer> arrayList =
我正在学习OCA认证,在进行了一些测试之后,我遇到了以下问题:ArrayList主题:
import java.util.ArrayList;
public class ArrayLists{
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(1);
list.add("hi");
// Passing a non-Generics list to a Generics list
请考虑以下代码:
public class MyClass<T>{
T data;
public MyClass(T data){ this.data=data; }
}
public class Main{
public static void main(String[] args){
MyClass m= new MyClass<Integer>(3);// ok
}
}
我读了"“这个话题。因此,如果我们有一个参数化类型MyClass<T>,那么通过对原始类型的防御,我们可以在编译时定义对原始类
我想急切地从数据库中加载一些记录以及它们之间的关系,如下所示:
let getEmails() =
let emails =
(query { for q in entities.QueueItems do
select q.Email
take batchSize }
).Include(fun (e:Email) -> e.QueueItem)
|> Seq.toArray
emails
|> Array.iter (