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
我有一个方法,它接受数组中的数组,并以随机顺序将其复制到另一个数组中,并返回被洗牌的数组。
但是,如果我想使它成为通用的,我不能创建E类型的第二个数组。为了解决这个问题,我尝试使用一个Arraylist,然后使用.toArray()方法并将其转换为E类型,但这会返回一个对象数组。
我目前的解决方案是直接修改数组并返回该数组,但是是否有一种方法可以返回正确类型的数组AKA --传递给方法的数组的类型?
import java.util.ArrayList;
import java.util.Arrays;
public class ShuffleArray
{
public stati
我有一个简单的泛型列表类。我试图做到这一点:给定一个列表实例,我们只知道它包含一个类的一个特定子类的实例,并且给定这个类的一个实例,如果它是包含的(子类)类型的实例,那么将这个实例添加到列表中,否则抛出一个异常(例如。ClassCastException)。我尝试了以下几点:
class MyList<T>
{
private Class<T> genericClass;
private List<T> list = new ArrayList<>();
public MyList(Class<T> gene
我正在做家庭作业,还没有弄清楚我做错了什么。
我正在尝试使用ArrayList创建一个书名列表
到目前为止,我的代码如下:
import java.awt.print.Book;
import java.util.ArrayList;
public class Books {
public static void main (String[] args){
ArrayList<Book> bookTitle = new ArrayList<Book>();
bookTitle.add ("Book title 1&
我会在下面列出我的代码,但这是交易。我有一个带有process方法的解析器类。此方法从网页中抓取数据。我想要获取刮取的每一行,将字符串拆分成一个数组,并将值添加到对象,然后将对象添加到ArrayList中。当循环迭代时,刮取的每一行的新值通过对象添加到ArrayList中。这段代码中的相关方法是公共ArrayList进程()
我得到以下编译错误:
构造函数this (String)是令牌"[",在此令牌之后预期的表达式上的未定义语法错误
ArrayList类型中的方法add(String)不适用于参数( for )
我在这里做错了什么,如果修好了又该怎么办?
public cl
public void run(){
setFont("Courier-24");
//Define list as ArrayList<Integer>
ArrayList<Integer> list = new ArrayList<Integer>();
readList(list);
}
private void readList(ArrayList list){
list.add("Hello");
list.add(2);
println("list
我正在尝试编写一个通用的print方法,它适用于实现"Iterable“接口的所有类
public class List<T> {
public static <T extends Iterable<T>> void print(T[] list){
for (Object element : list){
System.out.println(element);
}
}
public static void main(String[] args){
A
我有一个泛型类Foo<T>和参数化类型Foo<String>和Foo<Integer>。现在,我想将不同的参数化类型放入单个ArrayList中。正确的做法是什么?
候选人1:
public class MMM {
public static void main(String[] args) {
Foo<String> fooString = new Foo<String>();
Foo<Integer> fooInteger = new Foo<Integer>();
import java.util.List;
import java.util.ArrayList;
interface Canine {}
class Dog implements Canine {}
public class Collie extends Dog {
public static void main(String[] args){
List<Dog> d = new ArrayList<Dog>();
List<Collie> c = new ArrayList<Collie>();
嗨,我有一个基本的代码特性问题,给出如下。当我更改代码时,我得到了特殊的输出。下面的程序提供了正确的输出,因为我们知道Java默认不支持双调度。请您查看下面的代码并查看输出。之后,我修改了代码,得到了奇怪的输出。
import java.util.ArrayList;
import java.util.List;
class SavingAccount {
}
class DematAccount extends SavingAccount {
}
class Bank {
public void open(SavingAccount act ) {
Sys
我试图在Hamcrest中在everyItem()上使用everyItem(),但是我得到了以下编译错误:
error: no suitable method found for assertThat(List<Map<String,Object>>,Matcher<Iterable<Map<? extends String,?>>>)
assertThat(data, everyItem(hasKey("index")));
^
method Assert.<T#1>
我正在学习如何使用ArrayLists,并决定尝试制作一个ArrayList。我发现我可以做到:
ArrayList<Object> list = new ArrayList<Object>();
list.add("Hi");
list.add(new Integer(5), 9);
(我意识到我只需添加一个int,它会自动将其装箱)
问题是我不能将double或Double放在ArrayList中的指定索引处,这可以用Integer来做。我试过这样做:
list.add(new Double(4)); // I just redid it, and
我知道ArrayList<String> list1 = new ArrayList<String>();是做什么的,但是哪个部分调用的是参数化类型?
赋值运算符左侧的类型变量还是右侧的构造函数?当他们说参数化类型时,是否指的是在尖括号内定义参数化类型的构造方式,如ArrayList<String>()
因为我知道常规的List = new List()没有参数化类型。
问题是:哪个部分是参数化类型?左侧或右侧:ArrayList<String> list1 or new ArrayList<String>();
我对Gson和Json很陌生。在Gson的帮助下,我想通过Json序列化一些简单的事件。
注:代码为Kotlin。
public abstract class Event() {
}
public class Move : Event() {
var from: Point? = null
var to: Point? = null
}
public class Fire : Event() {
var damage: Int = 0
var area: ArrayList<Point> = Arr
public List<Object> query(){
List<Object> listToReturn = new ArrayList<Object>();
List<String> listOfString = new ArrayList<String>();
List<List<String>> listOfListOfString = new ArrayList<List<String>>();
list
我真的无法理解为什么在第一种情况下我得到编译错误,而在第二种情况下工作很好。
public class GenericsTest3 {
public static <W> void main(String[] args) {
List<W> l1 = new ArrayList<String>(); // compilation error: Type mismatch: cannot convert from ArrayList<String> to List<W>
doSome
它总是抱怨:
The method add(Matrix<T>) in the type List<Matrix<T>> is not applicable for the arguments (Matrix<String>)
在Extractor类的行中:
matrixList.add(new Matrix<String>(attributes));
在这3个类中定义我的泛型似乎有问题。有什么简单的方法可以解决这个问题吗?尝试了不同的方法,但都搞不清楚。
public class Test {
public static
为什么即使Animal是Dog的父类,go方法也会给我一个编译时异常?
class Animal{}
class Dog extends Animal{}
class Sample {
void go(ArrayList<Animal> list){}
public static void main(String...args)
{
ArrayList<Dog> list=new ArrayList<Dog>();
new Sample().go(list);
}
}
这给了我一个编
我正在清除Eclipse中的警告
ArrayList is a raw type. References to generic type ArrayList<E> should be parameterized
但我不明白为什么Eclipse定期使用通配符<?>。大多数情况下,它输入的类型都是正确的,即ArrayList<Bicycle>。但对于下面的代码,如果我在Line 1上执行Line 1快速修复,它将更改为List<?>,而如果首先对ArrayList执行快速修复,则会更改为ArrayList<Object>,尽管at Li
我正在尝试根据类A的int r对B类中名为BinOrder的A类型的列表进行排序。
但是,我收到了行Collections.sort(BinOrder)的这个错误;
The method sort(List<T>) in the type Collections is not applicable for the arguments (ArrayList<A>)
A类:
public class A{
int s;
int r;
public A(int si, int ri) {
s=si;
r= ri;
}
}
B类:
import java.
当按下按钮时,我使用下面的代码播放随机声音,但它显示了一个错误,我无法解决。有谁能帮忙吗?
Button myButton = (Button)findViewById(R.id.button1);
final List<Integer> soundList = new ArrayList<Integer>();
soundList.add(R.raw.sound);
soundList.add(R.raw.sound1);
soundList.add(R.raw.sound2);
so
这里是初学者,这里有一个问题,这里的Java代码: import java.util.
public class Pootis
{
public static void main(String[] args)
{
Superhero batman = new Superhero("Bruce", 26, "Batman");
Human rachel = new Human("Rachel", 24);
Superhero ironman = new Superhero("Tony", 35,
我是Java新手,正在尝试学习程序员可以使用的各种集合。我将"java.util“导入到Eclipse的剪贴簿中,并检查了以下代码。
ArrayList<String> list = new ArrayList<String>();
list.add("test1");
list.add("test2");
我收到这个输出。
The type ArrayList is not generic; it cannot be parameterized with arguments <String>
Syntax error
我正在尝试使用方法ArrayList创建数组的Arrays.asList,但是当我只有一个数组要传递到列表中时,我很难实现这个目标。
List<String[]> notWithArrays = Arrays.asList(new String[] {"Slot"}); // compiler does not allow this
List<String[]> withArrays = Arrays.asList(new String[] {"Slot"},new String[] {"ts"}); // this is
我有以下代码:
ArrayList<Object> list = new ArrayList<Object>();
list.add("StringType");
list.add(5);
list.add(new RandomClass());
List<Class<?>> classes = new ArrayList<>();
classes.add(String.class);
classes.add(int.class);
classes.add(RandomClass.class);
for (int
我正在为作者 Jeanne Boyarsky和Selikoff的OCP阅读书,书说:第122页
? super String
使用下限,我们告诉Java,该列表将是字符串对象的列表()或字符串的超类的一些对象的列表。
List<? super String> superString = new ArrayList<>();
superString.add(new String());// Valid
superString.add(new Object()); // Not Valid ? Why?. Object is a super cla
给出了来自的这个例子。
List<String> list = new ArrayList<>();
list.add("A");
// The following statement should fail since addAll expects
// Collection<? extends String>
list.addAll(new ArrayList<>());
为什么最后一行不能编译,而它看起来应该编译。第一行使用非常类似的结构,编译起来没有问题。
请详细解释一下。