有人可以解释一下这个类定义语句
public class BinarTree<Type extends Comparable<Type>> {...
Run Code Online (Sandbox Code Playgroud)
我完全理解它的目的,但不是语法.据我说它应该是公正的
public class BinarTree<Type extends Comparable> {...
Run Code Online (Sandbox Code Playgroud)
是什么意思
<Type extends Comparable<Type>> ?
^^^^
Run Code Online (Sandbox Code Playgroud) 我试着创建一个简单的计数器来计算一个字符在字符串中出现的次数,但我做错了.当我尝试打印计数器时,它会重复多次.
import java.util.Scanner;
public class Uppgift5 {
public static void main(String[] args) {
int counter = 0;
Scanner scanner = new Scanner(System.in);
System.out.println("What string do you want to search: ");
String string = scanner.nextLine();
System.out.println("What letter do you want to count? ");
String letter = scanner.nextLine();
for(int i=0; i<string.length(); i++ ) {
if (string.charAt(i) == letter.charAt(0)){
counter++;
}
System.out.println("This string has " + counter + " " + letter);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在通过编写一小段代码来探索Java Guava库.这是我为寻找n-sets 的笛卡儿积而写的.文档在这里
//allLists populated above
...
List<Set> interimList = new ArrayList<Set>();
for(List<String> tmp : allLists) //converting List<List> to List<Set>
{
Set interimSet = new HashSet(tmp);
interimList.add(interimSet);
}
System.out.println(interimList);
Sets.cartesianProduct(interimList);
Run Code Online (Sandbox Code Playgroud)
但这不是编译.最后一行Sets.cartesianProduct不接受List<Set>.但根据文件不是它的签名?
public static <B> Set<List<B>> cartesianProduct(List<? extends Set<? extends B>> sets)
错误信息: Cannot Resolve method cartesianProduct(java.util.List<java.util.Set)
我知道我可以使用以下方法检查列表
Collection.class.isAssignableFrom(field.getType())
Run Code Online (Sandbox Code Playgroud)
但是如何检查类中的 Field 是否是 Map 的实现呢?
void myMethod(Class<?> classToCheck) {
Field[] fields = classToCheck.getDeclaredFields();
for(Field field:fields) {
// check if field implements Map<?,?>
}
}
Run Code Online (Sandbox Code Playgroud) 今天我们谈到了Java 7在我们公司的优势.从Java 7开始,可以定义以下行
Map<String, List<String>> myMap = new HashMap<String, List<String>>();
Run Code Online (Sandbox Code Playgroud)
如
Map<String, List<String>> myMap = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
我们对上述主题进行了长时间的讨论.我们中的一些人认为这是类型推断(如varC#中的关键字),并且类型将在运行时计算,其他人认为它只是一种更简单的方式来声明某个变量并且没有推断,因为类型是已知的编译时的上下文.
请提供澄清.技术如何运作?
编辑:官方Oracle文档没有提供有关该文档的精确文档.http://docs.oracle.com/javase/tutorial/java/generics/genTypeInference.html
我会尽量问这个问题的通用性(没有双关语)。
假设我有一个用作汽车容器的对象“车库”。它看起来像这样:
public abstract class Garage {
public abstract List<? extends Car> getCars();
public abstract void addCarToGarage(Car car);
}
Run Code Online (Sandbox Code Playgroud)
因为我很有钱,我会有不同类型的车库,有的只有我的跑车,有的只有我的SUV等等。
所以我的车库之一看起来像这样:
public class SportCarGarage extends Garage {
@Override
public List<SportCar> getCars() {
// code to return the cards
}
@Override
public void addCarToGarage(Car car){
// code to add car to garage
}
}
Run Code Online (Sandbox Code Playgroud)
现在你可能已经看到我的问题了。我可以实现,getCars()以便它返回一个列表SportCar。但是如果我打电话addCarToGarage,我需要检查每辆车的类型,如果有人试图在我的 SportCarGarage 中添加 SUV,我不会收到语法错误。
我想要这样的东西:
public abstract class Garage {
public abstract List<? extends Car> getCars();
public abstract void addCarToGarage(? extends …Run Code Online (Sandbox Code Playgroud) 这个方法定义有什么问题?
public static List<T extends MyObject> T find() {
}
Run Code Online (Sandbox Code Playgroud)
编译说:
Syntax error, insert ";" to complete MethodDeclaration
Run Code Online (Sandbox Code Playgroud) List<List> d=new Arraylist<List>();
Run Code Online (Sandbox Code Playgroud)
我该如何对列表进行排序d?如果我使用Collection.sort(d);我收到以下错误:
Bound mismatch: The generic method sort(List<T>) of type Collections is not
applicable for the arguments (List<List>). The inferred type List is not a
valid substitute for the bounded parameter <T extends Comparable<? super T>>
Run Code Online (Sandbox Code Playgroud) 我最近开始实现一些数据结构,并且,我正在尝试使所有内容尽可能“可扩展”。
public abstract class AbstractNode<E extends Element, U extends AbstractNode<E, U>> { ... }
public class BinarySearchTree<Element> extends Tree<Element, Node<Element>> { ... }
public class Element implements Cloneable { ... }
public class Node<E extends Element> extends AbstractNode<E, Node<E>> { ... }
public abstract class Tree<E extends Element, T extends AbstractNode<E, T>> { ... }
Run Code Online (Sandbox Code Playgroud)
BinarySearchTree消息提示我在课堂上遇到很多错误Bound mismatch: The type Element is not a valid substitute for the bounded parameter <E extends Element> of the type Node<E>。为什么!?我在那里做错了什么?
另外,在BinarySearchTree类中,我得到了 …
class ServerSocket{
....
public ServerSocket(int port) throws IOException {
this(port, 50, null);
}
....
}
Run Code Online (Sandbox Code Playgroud)
我知道这个关键字用于表示活动对象或当前对象.在这段代码中,"this"的含义是什么?我得到这个代码(在这里)
java ×10
generics ×6
constructor ×1
guava ×1
java-7 ×1
oop ×1
println ×1
reflection ×1
this ×1