java中socket同时传递不同类型流的问题

2024-05-17 00:29

1. java中socket同时传递不同类型流的问题

不是很明白你为什么这么做,一般是只会封装一个输入流,不会分开两个来获取数据的。
流底层都是二进制数据流,无论你用什么流去读都是读同样的数据,声明两个输出流输出后,对于客户端还是只能看到一个流输入,不会给你分开的。所以这里你开两个子进程读,就会出现谁运行快就把数据读出来了,而且看你PrintWriter也没有flush,所以应该只传输了list数据,客户端BufferedReader先运行,就把数据读出来了。
正确的做法是你先要决定服务器与客户端的数据交换方式,到底是基于二进制、指定编码的字符还是对象?看你上面的情况,你想传输一个list,二进制和指定编码字符都比较麻烦,你需要把list通过某种转换成二进制或者是字符(通常是转成XML)。比较简单的就是像你上面那样传输对象,msg是个String对象,本身就可以用ObjectOutputStream传输,没有必要再用一个PrintWriter传输。

java中socket同时传递不同类型流的问题

2. java中 怎么通过Object对象参数,获取到在传值时的不同子类里的统一方法query

1、首先建议你不要传入到Object对象,既然你知道他们有共同的父类(假设名字叫A),那么你就应该传入到A对象。这样你就可以调用A的query方法。
2、如果你一定要用Object对象,那么,你可以
if (xxx instanceof A) {
    A a = (A) xxx;

    // TODO

}
在上述TODO的位置写上你要执行的操作,其实就是强制类型转换。至于这个条件不满足的时候怎么操作,则是你要考虑的问题了。A表示你的父类,xxx表示你传入的参数名。

3. Java怎么在一个包内的不同java文件中实现变量的传递

方法一:
可以把要访问的类在此类中实例化,通过new之后就可以调用实例化的属性和方法。
示例代码:
public class A1 {
public String str = "Hello World !";
}

public class B2 {
public static void main(String[] args){
A1 a = new A1();
System.out.println(a.str);
}
}
PS:必须在B2类中实例化A1,才可以访问它的属性。

方法二:
可以使用static静态变量,直接调用要访问类的属性和方法。
示例代码:
public class A1 {
public static String str = "Hello World !";
}

public class B2 {
public static void main(String[] args){
System.out.println(A1.str);
}
}

Java怎么在一个包内的不同java文件中实现变量的传递

4. java写个东西,根本传入不同的参数执行不同类中的方法,请问该怎么写?

提供个简单的思路:
对参数进行判断,然后在每个分支里面new不同的对象,调用对象的方法。

如果你可以详细的描述你的问题,我可以给出详细的代码。

5. Java中一个类如何访问另一个类中的成员变量问题

如果成员变量是静态的,那么直接在A类中通过“B.变量名称”的形式即可。
如果成员变量是动态的,需要在B类中创建变量的set和get方法,之后在A类中:
B b =new B();进行B类实例化
b.setName("zhangsan");//赋值
b.getName();获取到成员变量值。

Java中一个类如何访问另一个类中的成员变量问题

6. java中,向方法传递对象引用变量是按值传递,其中有修改变量和修改对象的问题,

传值传引用都不够准确,可以理解成传引用变量的副本值。引用变量分为字面值引用变量(即基本数据类型引用变量)和对象引用变量 。 详情需要了解数据类型使用机制和堆栈的概念:http://www.cnblogs.com/alexlo/archive/2013/02/21/2920209.html
  对象引用变量:即普通java对象的引用变量 ,如 String a = "abc" , a就是对象引用变量。java 是不能直接操作对象的,只能通过对“对象引用的操作”来操作对象。而对象的引用的表示就是对象变量。可以多个对象引用变量指向同一个对象。
  字面值引用变量:即普通数据类型的引用变量 ,如 int b = 1 , b就是字面值引用变量。可以有多个字面值引用变量指向同一字面值,但其中一个引用修改字面值,不会影响另一个引用字面值,这点要与对象引用区别开。

7. Java在一个对象中,声明另一个对象,再使用这个对象的变量,这种方式是引用不?

你是说
public class A {
    private int age=10;
    public B b ;
}

class B {
    
}

a为A类对象实例,b为B类对象实例。当a.b对b赋值的情况吗?你要知道a.b是从a的首地址开始计算出a对象存储的B类引用变量的b的地址,b的内容是在堆内存中存储的。a.b = xx;这里的xx必定也是B类对象的引用变量的值(即B类在堆内存中的首地址)。这里是值传递的形式。Java中的赋值,例如A a = new A();都是值传递的形式。

Java在一个对象中,声明另一个对象,再使用这个对象的变量,这种方式是引用不?

8. java 传递对象的问题

使用instanceof进行判断即可。
最新文章
热门文章
推荐阅读