小编Kon*_*kov的帖子

Java泛型扩展了语法

有人可以解释一下这个类定义语句

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)

java generics

1
推荐指数
1
解决办法
68
查看次数

为什么输出会不断重复?

我试着创建一个简单的计数器来计算一个字符在字符串中出现的次数,但我做错了.当我尝试打印计数器时,它会重复多次.

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 println

0
推荐指数
1
解决办法
691
查看次数

Java Guava CartesianProduct

我正在通过编写一小段代码来探索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)

java generics cartesian-product guava

0
推荐指数
1
解决办法
2026
查看次数

如何在Java中通过反射检查成员变量是否是Map?

我知道我可以使用以下方法检查列表

 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 reflection

0
推荐指数
1
解决办法
1773
查看次数

类型推断:Java 7类型参数

今天我们谈到了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

java generics type-inference variable-declaration java-7

0
推荐指数
1
解决办法
2946
查看次数

泛型类型作为抽象方法的参数?

我会尽量问这个问题的通用性(没有双关语)。

假设我有一个用作汽车容器的对象“车库”。它看起来像这样:

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)

java generics

0
推荐指数
1
解决办法
3672
查看次数

Java泛型 - 编译器错误

这个方法定义有什么问题?

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)

java generics

0
推荐指数
1
解决办法
71
查看次数

如何对List类型列表进行排序?

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)

java

0
推荐指数
1
解决办法
71
查看次数

绑定不匹配:该类型不是绑定参数的有效替代

我最近开始实现一些数据结构,并且,我正在尝试使所有内容尽可能“可扩展”。

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类中,我得到了 …

java oop generics

0
推荐指数
1
解决办法
693
查看次数

这是什么意思"?

class ServerSocket{

   ....

   public ServerSocket(int port) throws IOException {
      this(port, 50, null);
   }

   ....
}
Run Code Online (Sandbox Code Playgroud)

我知道这个关键字用于表示活动对象或当前对象.在这段代码中,"this"的含义是什么?我得到这个代码(在这里)

java constructor this

0
推荐指数
1
解决办法
81
查看次数