Java 为什么我';我在这里没有上锁或不安全的操作?

Java 为什么我';我在这里没有上锁或不安全的操作?,java,Java,我有两节课。其中一个类(类_1)具有返回列表的方法: class Class_1{ .... public List<String> method_1(){ Statement st = null; ResultSet res = null; List<String> tables = new ArrayList<String>(); try { st =

我有两节课。其中一个类(类_1)具有返回列表的方法:

class Class_1{
    ....
    public List<String> method_1(){
        Statement st = null;
        ResultSet res = null;
        List<String> tables = new ArrayList<String>();

        try {
            st = this.cnx.createStatement();
            res = st.executeQuery("SHOW TABLES");
            while(res.next()){
               tables.add(res.getString(1));
            }
        }
        catch(Exception e){
               e.printStackTrace();
        }        

        return tables;

    }
}
必需:列表[字符串]

找到:列表

为什么呢

编辑

我做了一些调查,发现整个问题是这样的:

tables.add(res.getString(1));
它似乎是一个字符串,但编译器不喜欢它。因此,如果我简单地切换到:

tables.add("Some real string");

然后我没有收到任何警告。真奇怪。

请检查导入和数组

import java.util.Arrays;
import java.util.List;
public class c1 {
    public List<String> method_1(){
        List<String> my_list = Arrays.asList("a1", "b2"); //<- got a list by some procedure
        return my_list;
    }
}
导入java.util.array;
导入java.util.List;
公共类别c1{
公开列表方法_1(){

根据
getString
方法的
ResultSet
文档,列出my_List=Arrays.asList(“a1”、“b2”);/方法:

返回: 列值;如果该值为SQL NULL,则返回的值为NULL

在这种情况下,
列表表中插入了一个
null
。这似乎是编译器所抱怨的


在添加到
列表表之前,您应该检查
getString
是否返回
null

我想有些事情您没有告诉我们。您能提供更多详细信息吗?这看起来您可能对代码做了太多的删减。是否类_1实际上是一个带有泛型参数的类?如果您不提供您也会遇到这些错误请提供一个完整的可编译示例。无法复制此示例。我已将您的类导入到项目中,但没有收到任何警告。让我澄清一下:您是说您通过修改Class1中的方法体而不是其签名来消除Class2中的警告吗?
tables.add("Some real string");
import java.util.Arrays;
import java.util.List;
public class c1 {
    public List<String> method_1(){
        List<String> my_list = Arrays.asList("a1", "b2"); //<- got a list by some procedure
        return my_list;
    }
}
import java.util.List;
public class c2 {
    public static void main(String[] args) {
        c1 obj = new c1();
        List<String> s1 = obj.method_1();
        System.out.println(s1);
    }
}