【问题标题】:How to use a variable inside one class/method inside another class?如何在另一个类中的一个类/方法中使用变量?
【发布时间】:2020-09-23 17:48:01
【问题描述】:

谁能帮助我,如何将一个类中的变量传递给另一个类,以便我可以继续使用它?我的意思是例如下面图片代码中的 timeValue。非常感谢,即使我努力了,我也没有设法让它正常工作。

package chattie;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.List;

public class ChatReader {

    public List<String> read(File file) {
        // public List<String> timeValue;
        File path = file;
        List<String> timeValue = null;

        try (Stream<String> lines = Files.lines(Paths.get(String.valueOf(path)))) {
            String content = lines.collect(Collectors.joining(System.lineSeparator()));
            String deleter = content.replaceAll("Time:", "").replaceAll("Name:", "").replaceAll("Message:", "");
            String line = deleter;
            String[] completeArray = line.split("\n");

            int l = completeArray.length;
            String[] arrayOnlyValues = new String[l];

            for (int i = 0; i < completeArray.length; ++i) {
                arrayOnlyValues[i] = completeArray[i];
            }

            List<String> arrayList = new ArrayList<String>(Arrays.asList(completeArray));
            arrayList.removeAll(Arrays.asList("", null));

            List<String> list1 = arrayList;
            int[] t = {0};
            timeValue = list1.stream()
                    .filter(x -> t[0]++ % 3 == 0)
                    .collect(Collectors.toList());
            System.out.println(timeValue);

            int[] n = {2};
            List<String> list2 = arrayList;
            List<String> nameValue = list2.stream()
                    .filter(x -> n[0]++ % 3 == 0)
                    .collect(Collectors.toList());
            System.out.println(nameValue);

            int[] m = {1};
            List<String> list3 = arrayList;
            List<String> messageValue = list3.stream()
                    .filter(x -> m[0]++ % 3 == 0)
                    .collect(Collectors.toList());
            System.out.println(messageValue);

        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

【问题讨论】:

  • 您好,欢迎您。代码是文本。请edit您的问题并将其发布为文字,而不是图片。
  • 完成了,你能帮帮我吗?谢谢
  • 不清楚你想用timeValue做什么。您是什么意思“将方法中的一个类中的变量传递给另一个类”?要么将它作为参数传递给方法,要么从它自己的类中公开它,让其他类访问它。
  • 假设里面的 timeValue 是 [12:23:37, 14:24:11, 07:34:22]。我可以在“旧”类中使用它。但是如何在新类中使用“timeValue”,我们称之为“TEST”类。如何将变量 timeValue 及其内容传输到新的“TEST”类?
  • 取决于你之后需要做什么。

标签: java class variables


【解决方案1】:

你可以从方法中返回timeValue

public List<String> read(File file) {
    List<String> timeValue = null;

    ...  // instantiate timeValue

    return timeValue;
}

然后从另一个类/方法调用它:

class foo {
    public void getTimeValue() {
        List<String> timeValue = ChatReader().read(file);
    } 
}

【讨论】:

  • 这个方法对我不起作用,第二部分从另一个类调用....它不知道如何处理 "file" ,它是一个未知参数,在 intellij 中以红色突出显示。
  • 是的,您需要在调用 read 时将其传递给 file。你之前在哪里打电话给read()
  • 但是文件是文件......所以如果我理解正确,应该传递“文件”并且它是,因为这是名称,但它不起作用。
【解决方案2】:

Hii 将 value 声明为 class 的成员,而不是 method() 的成员。你的代码应该是这样的:

  class aaa    {
        String value="good luck";
         String txt="Best of luck";
       void mthod(){
                               }
                 }
 class bbb    {
        aaa obj=new aaa();
         bbb(){//constructor
         System.out.println(obj.value);
 }
     public static void main(String args[]){
    bbb obj2=new bbb();
  }
}

【讨论】:

  • 我试过了,但它返回的唯一内容是“null”。这是不正确的。它应该返回旧值 [12:23:37, 14:24:11, 07:34:22]。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
  • 2017-09-28
  • 1970-01-01
  • 2019-03-11
  • 1970-01-01
相关资源
最近更新 更多