无法访问Java中的内部类问题

阿姆里塔·斯塔(Amrita Stha)

从内部类引用的局部变量必须是final或有效的final错误显示在以下代码中:

public Vector<Map<String, Object>> newsFeedConnection(String var, Hashtable punishment) {
    ConnectionRequest connectionRequest;
    connectionRequest = new ConnectionRequest() {
        @Override
        protected void readResponse(InputStream input) throws IOException {
            JSONParser p = new JSONParser();
            results = p.parse(new InputStreamReader(input));

            punishment = (Hashtable) results.get("punishment");
        }
    }
}

但是当我更改将其更改为final(下面的代码)时,它再次给出“无法为最终变量惩罚分配值”错误。

public Vector<Map<String, Object>> newsFeedConnection(String var, final Hashtable punishment) {
    ConnectionRequest connectionRequest;
    connectionRequest = new ConnectionRequest() {
        @Override
        protected void readResponse(InputStream input) throws IOException {
            JSONParser p = new JSONParser();
            results = p.parse(new InputStreamReader(input));

            punishment = (Hashtable) results.get("punishment");
        }
    }
}

如果设置全局变量,则无法从其他类的方法访问该值。

基兰·K

按值传递与按引用传递-传递对象引用时,您正在执行按引用传递。这样做时,可以通过在对象上调用适当的方法来更改对象的状态,但不能更改对象本身的引用。例如:

    public class TestPassByReference {

    public static void main(String[] args){
        StringBuilder stringBuilder = new StringBuilder("Lets Test!");
        changeStringDoesNotWork(stringBuilder);
        System.out.println(stringBuilder.toString());
        changeString(stringBuilder);
        System.out.println(stringBuilder.toString());
    }

    static void changeString(StringBuilder stringBuilder){
        stringBuilder.append(" Yeah I did it!");
    }

    static void changeStringDoesNotWork(StringBuilder stringBuilder){
        stringBuilder = new StringBuilder("This will not work!");
    }
}

输出:

Lets Test!               //Value did not change
Lets Test! Yeah I did it!

我希望现在您可以与此基本方面相互冲突,以解决不正确的情况。

但是,您可以执行以下操作:

HashTable tempHashTable = (Hashtable) results.get("punishment");    
punishment.clear();
punishment.putAll(tempHashTable);

还有为什么要使用HashTable?有更好的线程安全集合类可以提供更好的性能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java无法访问内部类中的受保护变量

来自分类Dev

无法访问内部类中的LinkedHashMap

来自分类Dev

无法访问C ++中的内部类

来自分类Dev

从内部类中访问Java actionlistener变量

来自分类Dev

解释在Java中访问内部类的方法?

来自分类Dev

Java android访问外部类中内部类的成员字段

来自分类Dev

无法在java中创建内部类对象

来自分类Dev

内部类问题-嵌套在Main中时Java无法找到“ InnerClass2”

来自分类Dev

无法访问对象内部的数据-新手Javascript问题

来自分类Dev

无法从内部类中访问全局最终变量

来自分类Dev

访问内部类中的变量

来自分类Dev

从内部类中的with访问的变量

来自分类Dev

内部类中的变量访问

来自分类Dev

如何在Java中访问内部类(在assert中)

来自分类Dev

如何从Java中的封闭类访问内部类?

来自分类Dev

在Java ASM中访问私有内部类

来自分类Dev

在struts.xml中访问Java内部类

来自分类Dev

无法访问Java中的字段注释

来自分类Dev

我无法访问Java中的对象

来自分类Dev

无法访问数组Java中的对象

来自分类Dev

无法访问JavaScript中的Java变量

来自分类Dev

Maven依赖Java中无法访问

来自分类Dev

无法访问Clojure中的Java字段

来自分类Dev

无法访问Java中的Class方法

来自分类Dev

Java-If-Else-无法访问的内部对象声明

来自分类Dev

无法从内部类访问包含类的方法

来自分类Dev

无法访问功能中的jquery。“变量范围”问题?

来自分类Dev

Delphi中的Java内部类

来自分类Dev

Java中的内部类与子类